Spring AMQP自定义消息关联,使用应用程序为使用spring集成的出站网关生成的标识符。
我们需要将出站网关的消息与app生成的id相关联,其中消息的实际处理将在外部系统中发生,请求的响应将来自外部系统,所以我们不能依赖amqp_correlation数据。
如果您提供的步骤很棒。
已尝试解决方案
结果
Rabbit模板能够使用自定义标头进行映射,但它会生成自己的值,不使用请求/回复消息中设置的值
答案 0 :(得分:1)
请为此打开new feature JIRA Issue。
请记住,确保correlationId是唯一的是您的责任。
您可以通过继承模板并覆盖sendToRabbit
来解决此问题;并在那里设置correlationId;你必须保存模板的correlationId
(理想情况下,在不同标题的消息中,但可能在Map
中)并让服务器也返回该标题。
protected void sendToRabbit(Channel channel, String exchange, String routingKey, boolean mandatory,
Message message) throws IOException {
// fix up properties
super.doSend(...);
}
您还必须覆盖onMessage()
以恢复入站请求的正确correlationId。