Allow an AMQP Session to be reused when creating an RPC link.

This commit is contained in:
Martin Strobel 2018-10-15 15:47:09 -07:00
Родитель fc7777a747
Коммит 9adb049049
1 изменённых файлов: 31 добавлений и 26 удалений

Просмотреть файл

@ -70,35 +70,40 @@ func NewLink(conn *amqp.Client, address string) (*Link, error) {
return nil, err
}
authSender, err := authSession.NewSender(
amqp.LinkTargetAddress(address),
)
if err != nil {
return nil, err
}
return NewLinkWithSession(conn, authSession, address)
}
linkID, err := uuid.NewV4()
if err != nil {
return nil, err
}
func NewLinkWithSession(conn *amqp.Client, session *amqp.Session, address string) (*Link, error) {
id := linkID.String()
clientAddress := strings.Replace("$", "", address, -1) + replyPostfix + id
authReceiver, err := authSession.NewReceiver(
amqp.LinkSourceAddress(address),
amqp.LinkTargetAddress(clientAddress),
)
if err != nil {
return nil, err
}
authSender, err := session.NewSender(
amqp.LinkTargetAddress(address),
)
if err != nil {
return nil, err
}
return &Link{
sender: authSender,
receiver: authReceiver,
session: authSession,
clientAddress: clientAddress,
id: id,
}, nil
linkID, err := uuid.NewV4()
if err != nil {
return nil, err
}
id := linkID.String()
clientAddress := strings.Replace("$", "", address, -1) + replyPostfix + id
authReceiver, err := session.NewReceiver(
amqp.LinkSourceAddress(address),
amqp.LinkTargetAddress(clientAddress),
)
if err != nil {
return nil, err
}
return &Link{
sender: authSender,
receiver: authReceiver,
session: session,
clientAddress: clientAddress,
id: id,
}, nil
}
// RetryableRPC attempts to retry a request a number of times with delay