[英]AMQP-backed publish-subscribe channel and message conversion
在基於服務的應用程序中,我們將<int-amqp:publish-subscribe-channel/>
用作事件總線。 send方法和消息處理程序均基於spring-messaging(自spring-integration 4.0(+)起)中的Message
類。事件是對實體的更改,需要其他服務來處理。
問題是:spring-amqp將spring-messaging Message
類視為任意對象有效載荷,因為它未被識別為spring-amqp Message
。 這將導致以下問題:
Message
,該Message
在Spring Framework 4.0和4.1之間不兼容 Jackson2JsonMessageConverter
是Jackson2JsonMessageConverter
)不能解決問題,因為它還會轉換Message
實例-這是spring-integration的GenericMessage
,由於缺少適當的構造函數,因此無法從JSON實例化 我們需要混合使用Spring版本,因為我們已經使用Grails 2.4(基於Spring 4.0)和當前的Spring Boot(依賴於Spring 4.1)實現了服務。
有沒有其他方法,最好是慣用的彈簧整合方法? 除了PublishSubscribeAmqpChannel
之外,也許還有其他抽象嗎? 還是我們可以應用的其他任何消息轉換方式?
代替使用由amqp支持的通道,可以使用outbound-channel-adapter發送並使用inbound-channel-adapter接收。
通道保存整個消息(序列化的),而適配器將有效負載作為消息主體傳輸,並且(可選)將標頭映射到amqp標頭/從amqp標頭映射。
您將需要配置pub / sub的扇出交換(默認情況下,該通道將創建一個名為si.fanout.<channelName>
的si.fanout.<channelName>
然后,您可以為每個收件人綁定一個隊列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.