首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AMQP支持的发布-订阅通道和消息转换

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

Stack Overflow用户
提问于 2015-02-26 08:45:28
回答 1查看 547关注 0票数 1

在基于服务的应用程序中,我们使用<int-amqp:publish-subscribe-channel/>作为一种事件总线。send方法和消息处理程序基于spring消息传递中的Message类(从SpringIntegration4.0 (+)开始)。事件是对需要被其他服务获取的实体的更改。

问题是:spring将spring消息传递Message类视为任意对象有效负载,因为它不被识别为spring Message。这造成以下问题:

  • 默认消息格式是序列化的Java对象。Spring不仅序列化了原始的有效负载对象,而且还序列化了Spring消息传递Message,它在SpringFramework4.0和4.1之间不兼容。
  • 为JSON (确切地说,是Jackson2JsonMessageConverter)配置消息转换器并不能解决这个问题,因为它还转换了Message实例--这是spring集成的GenericMessage,并且不能从JSON实例化,因为它缺少适当的构造函数

我们需要混合Spring版本,因为我们有用Grails2.4(基于Spring4.0)和当前Spring (依赖Spring4.1)实现的服务。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 14:12:29

与其使用amqp支持的通道,不如使用出站通道适配器发送,使用入站通道适配器接收.

通道保存整个消息(序列化),而适配器将有效负载作为消息体传输,并(可选)将头映射到或从amqp标头。

您需要为pub/sub配置一个扇出交换(默认情况下,通道将创建一个名为si.fanout.<channelName>的交换。然后,可以为每个收件人绑定一个队列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28737865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档