使用AmqpProxyFactoryBean + AmqpInvokerServiceExporter添加自定义标头

时间:2015-02-03 09:26:15

标签: spring-amqp

我有两个单独的服务使用AmqpProxyFactoryBean(“客户端”)和AmqpInvokerServiceExporter(“服务器”)进行通信。现在,我想在通过AMQP代理发出的每个请求中包含一些自定义标头,并且能够在“服务器”上访问它们。有什么简单的方法可以达到这个目的吗?

2 个答案:

答案 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或侦听器容器。

同样,这使您可以完全控制标题。