Spring 引导 + Spring 集成 (AMQP)

Spring Boot + Spring Integration (AMQP)

我一直在阅读 Spring 集成的文档,但我仍然无法弄清楚如何为以下集成建模:

+----------+  --- (request) --> +----------+ --- (request) --> +----------+
| Service1 |                    | RabbitMQ |                   | Service2 |
+----------+  <--- (reply) ---- +----------+ <--- (reply) ---- +----------+

基本上我想做的是在 Service 1Service 2 之间共享一个接口,比如说

public interface Service2 {
    int sum(int a, int b);

    int subtract(int a, int b);
}

并且能够打电话

service2proxyInstance.sum(1, 2)

Service1 内的某种自动生成的代理 class 上。

根据我的阅读,我认为我必须在 Service1 中使用 OutboundGateway 并在 Service2 中使用 InboundGateway,但我似乎无法将它们放在一起.任何人都可以阐明一些情况并提供一个非常简单的例子吗? Spring Integration 中的所有示例似乎都使用了 XML 配置,但由于我对 Spring 很陌生并且习惯了基于注释的配置,所以我无法充分阅读它们。

不知道如何帮助你,因为你已经说得对了。

您的服务应该是 @MessagingGateway 或调用这样的服务。这应该向 AmqpOutboundEndpoint 的频道发送消息并等待来自那里的回复。这实际上是由 @MessagingGateway.

自动完成的

如果它是 POJO 而不是 String 或用于 JSON-编组的东西,你 payload 将被序列化。

另一个应用程序应该从 AmqpInboundGateway 开始,向 Service2 发送反序列化的请求 payload 并等待那里的回复最后发送回您的 Service1。

查看 Spring 集成 Java DSL 和 AMQP tests

并与您分享 PoC 和您的担忧,以便更好地了解正在发生的事情。