我有两个单独的服务使用AmqpProxyFactoryBean
(“客户端”)和AmqpInvokerServiceExporter
(“服务器”)进行通信。现在,我想在通过AMQP代理发出的每个请求中包含一些自定义标头,并且能够在“服务器”上访问它们。有什么简单的方法可以达到这个目的吗?
答案 0 :(得分:0)
由于AmqpClientInterceptor
使用AmqpTemplate
发送和接收AMQP消息,您可以为RabbitTemplate
任意自定义MessageConverter
提供toMessage()
。并填充RemoteInvocation.invoke()
实施中的任何其他标题。
但是我不确定您是否能够访问服务器端的那些自定义标头。我们最终只有{{1}}。
所以,对我来说,你最终会得到一个额外的RPC参数来解决这个问题。
从另一方面来说,当您可以将该RPC消息不仅路由到RPC队列时,自定义标头可能对其他AQMP路由方案有用。
答案 1 :(得分:0)
考虑使用Spring Integration AMQP Gateways而不是远远超过rabbitmq;这样你就可以完全控制来回传递的标题。
如果您不想使用Spring Integration,可以使用客户端上的RabbitTemplate
sendAndReceive
方法以及服务器上的receiveAndSend
或侦听器容器。
同样,这使您可以完全控制标题。