想象一下,我有两个Java应用程序A和B,使用Spring Integration的RabbitMQ支持进行通信。
我可以从A到B进行同步/阻止呼叫吗?如果是这样,大致如何?
理想情况下,A有一个Spring Integration Gateway,它可以通过例如一种名为
的方法Object doSomething(Object param)
然后当网关通过RabbitMQ将消息发送到B上的ServiceActivator时,它会阻塞,B返回返回值,最终成为doSomething()方法的结果。
似乎这可能是可能的,但文档和其他Stack Overflow问题似乎并没有直接解决这个问题。
非常感谢!
答案 0 :(得分:1)
其实这是真的。完全Gateway
模式实现了这一要求。
您的客户端被阻止等待来自该网关方法的结果,但基础集成流可以是async
,paralleled
等。
Spring Integration AMQP为RabbitMQ提供阻塞<int-amqp:outbound-gateway>
场景的request/reply
。
当然,另一方,接收方应该处理correlation
从请求消息发送回复replyToAddress
的回复。在那里使用<int-amqp:inbound-gateway>
的简单方法。