Skip to content

Commit 6eff31b

Browse files
Direct Reply-To: add Go AMQP 1.0 example (#2359)
* Direct Reply-To: add Go AMQP 1.0 example Co-authored-by: Michael Klishin <[email protected]>
1 parent 9d5cebb commit 6eff31b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

docs/direct-reply-to.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,45 @@ receive {amqp10_msg, ReceiverRequester, ReplyMsg} ->
244244
end.
245245
```
246246
</TabItem>
247+
<TabItem value="Go" label="Go">
248+
A complete example is available in the [tutorials repository](https://github.com/rabbitmq/rabbitmq-tutorials/blob/main/go/rpc_amqp10.go).
249+
```go
250+
// RPC client creates a receiver
251+
receiver, err := session.NewReceiver(ctx, "", &amqp.ReceiverOptions{
252+
SourceCapabilities: []string{"rabbitmq:volatile-queue"},
253+
SourceExpiryPolicy: amqp.ExpiryPolicyLinkDetach,
254+
DynamicAddress: true,
255+
RequestedSenderSettleMode: amqp.SenderSettleModeSettled.Ptr(),
256+
})
257+
258+
// RPC client uses the generated address when sending a request
259+
replyAddress := receiver.Address()
260+
requestMsg := &amqp.Message{
261+
Properties: &amqp.MessageProperties{
262+
MessageID: messageID,
263+
ReplyTo: &replyAddress,
264+
},
265+
Data: ...,
266+
}
267+
268+
// RPC server extracts the message ID and reply-to address
269+
270+
msg, _ := receiver.Receive(ctx, nil)
271+
_ = receiver.AcceptMessage(ctx, msg)
272+
messageID := msg.Properties.MessageID.(string)
273+
replyTo := *msg.Properties.ReplyTo
274+
275+
// RPC server uses the reply-to value and message ID in its response
276+
sender, _ := session.NewSender(ctx, replyTo, nil)
277+
278+
replyMsg := &amqp.Message{
279+
Properties: &amqp.MessageProperties{
280+
CorrelationID: messageID,
281+
},
282+
Data: ...,
283+
}
284+
```
285+
</TabItem>
247286
</Tabs>
248287

249288

0 commit comments

Comments
 (0)