我可以使用Spring Integration通过RabbitMQ进行同步/阻塞调用吗?

时间:2014-11-11 10:30:19

标签: java spring rabbitmq spring-integration

想象一下,我有两个Java应用程序A和B,使用Spring Integration的RabbitMQ支持进行通信。

我可以从A到B进行同步/阻止呼叫吗?如果是这样,大致如何?


理想情况下,A有一个Spring Integration Gateway,它可以通过例如一种名为

的方法
Object doSomething(Object param)

然后当网关通过RabbitMQ将消息发送到B上的ServiceActivator时,它会阻塞,B返回返回值,最终成为doSomething()方法的结果。

似乎这可能是可能的,但文档和其他Stack Overflow问题似乎并没有直接解决这个问题。

非常感谢!

1 个答案:

答案 0 :(得分:1)

其实这是真的。完全Gateway模式实现了这一要求。

您的客户端被阻止等待来自该网关方法的结果,但基础集成流可以是asyncparalleled等。

Spring Integration AMQP为RabbitMQ提供阻塞<int-amqp:outbound-gateway>场景的request/reply

当然,另一方,接收方应该处理correlation从请求消息发送回复replyToAddress的回复。在那里使用<int-amqp:inbound-gateway>的简单方法。