@@ -244,6 +244,45 @@ receive {amqp10_msg, ReceiverRequester, ReplyMsg} ->
244244end .
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