AMQP 支持的发布-订阅通道和消息转换

AMQP-backed publish-subscribe channel and message conversion

我们在基于服务的应用程序中使用 <int-amqp:publish-subscribe-channel/> 作为一种事件总线。发送方法以及消息处理程序基于 spring-messaging 中的 Message class(从 spring-integration 4.0 (+) 开始。事件是对需要由其他服务拾取的实体。

问题是:spring-messaging Message class 被 spring-amqp 视为任意对象负载,因为它不被识别为 spring-amqpMessage。这会导致以下问题:

我们需要混合 Spring 版本,因为我们有使用 Grails 2.4(基于 Spring 4.0)和当前的 Spring Boot(依赖于 Spring 4.1).

有什么办法解决这个问题,最好是惯用的 spring 集成方式?除了 PublishSubscribeAmqpChannel 之外,是否还有其他抽象?或者我们可以应用的任何其他消息转换方式?

不使用 amqp-backed 频道,而是使用 outbound-channel-adapter 发送和 inbound-channel-adapter 接收。

通道保存整个消息(序列化),而适配器将有效负载作为消息 body 和(可选)映射 headers to/from amqp headers 进行传输。

您需要为 pub/sub 配置一个扇出交换器(频道将默认创建一个名为 si.fanout.<channelName> 的交换器。然后您可以为每个接收者绑定一个 queue。