在基于服务的应用程序中,我们使用<int-amqp:publish-subscribe-channel/>作为一种事件总线。send方法和消息处理程序基于spring消息传递中的Message类(从SpringIntegration4.0 (+)开始)。事件是对需要被其他服务获取的实体的更改。
问题是:spring将spring消息传递Message类视为任意对象有效负载,因为它不被识别为spring Message。这造成以下问题:
Message,它在SpringFramework4.0和4.1之间不兼容。Jackson2JsonMessageConverter)配置消息转换器并不能解决这个问题,因为它还转换了Message实例--这是spring集成的GenericMessage,并且不能从JSON实例化,因为它缺少适当的构造函数我们需要混合Spring版本,因为我们有用Grails2.4(基于Spring4.0)和当前Spring (依赖Spring4.1)实现的服务。
有没有办法解决这个问题,最好是一种惯用的弹簧集成方式?除了PublishSubscribeAmqpChannel之外,还有其他抽象吗?或者我们可以应用的任何其他消息转换方法?
发布于 2015-02-26 14:12:29
与其使用amqp支持的通道,不如使用出站通道适配器发送,使用入站通道适配器接收.
通道保存整个消息(序列化),而适配器将有效负载作为消息体传输,并(可选)将头映射到或从amqp标头。
您需要为pub/sub配置一个扇出交换(默认情况下,通道将创建一个名为si.fanout.<channelName>的交换。然后,可以为每个收件人绑定一个队列。
https://stackoverflow.com/questions/28737865
复制相似问题