1

我一直在讀通過了Spring集成的文件,但我仍然無法弄清楚如何建模以下整合:春天引導+ Spring集成(AMQP)

+----------+ --- (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

從我讀,我想我必須使用Service1OutboundGatewayService2InboundGateway,但我似乎無法把它們放在一起。任何人都可以擺脫一些光線,也許提供一個非常簡單的例子? Spring Integration中的所有示例似乎都使用XML配置,但由於我對Spring很新,並且習慣於基於註釋的配置,所以我無法充分閱讀它們。

回答

1

不知道如何幫助你,因爲你已經說了一切正確。

您的服務應該是@MessagingGateway或致電此類服務。這應該發送消息到AmqpOutboundEndpoint的頻道,並等待從那裏回覆。這實際上是由@MessagingGateway自動完成的。

如果它是POJO而不是String或JSON編組的東西,那麼您將​​序列化。

另一個應用程序應該從AmqpInboundGateway開始,向Service2發送一個請求,反序列化爲​​,並等待從那裏的回覆最終返回給您的Service1。

查看Spring Integration Java DSL和AMQP tests

並分享您的PoC和您的關注,以便更好地瞭解正在發生的事情。

+0

對不起,如果我看起來很笨,但我還是不明白。另外,我忘了提及我的目標是將'Service1'和'Service2'作爲不同的微服務(不同的JVM,首先)。 –

+0

沒錯。這是正確的。這就是爲什麼你的微服務之間有RabbitMQ。我仍然沒有看到您的解決方案的問題。你應該繼續前進!你有一個好的設計和原理理解。只需坐下並抓住鍵盤。正如我在開頭所說:我沒有看到任何問題,因爲已經有答案了。 –

+0

這裏的問題可能是,我有一個使用Spring Remoting(AMQP)的工作實現,我試圖遷移到Spring Integration(也使用AMQP),但我仍然沒有完全理解這些概念。我現在就去看看,並會保持你的發佈。非常感謝您:-) –