扇出性 java_java – 配置Spring Integration聚合器以组合RabbitMq扇出交换的响应

我试图使用

Spring Integration配置以下内容:

>向频道发送消息.

>将此消息发布到与n个消费者的兔子扇出(pub / sub)交换.

>每个消费者都提供响应消息.

>让Spring Integration在将它们返回到原始客户端之前聚合这些响应.

到目前为止,我有一些问题……

>我正在使用发布 – 订阅 – 通道来设置apply-sequence =“true”属性,以便correlationId,sequenceSize& sequenceNumber属性已设置. DefaultAmqpHeaderMapper抛弃了这些属性. DEBUG headerName = [correlationId]将不会被映射

>即使在扇出交换中注册了2个队列,sequenceSize属性也只被设置为1.据推测,这意味着消息将过早地从聚合器中释放.我希望这是因为我滥用发布 – 订阅 – 频道才能使用apply-sequence =“true”,而且正确地说只有一个订户,即int-amqp:outbound-gateway.

我的出站Spring配置如下:

amqp-template="amqpTemplate" exchange-name="fanout-exchange"

reply-channel="reply"/>

我的rabbitMQ配置如下:

消费者看起来像这样:

任何建议都会很棒,我怀疑我的某个地方有错误的结尾……

基于Gary的评论新的出站弹簧配置:

amqp-template="amqpTemplate" exchange-name="fanout-exchange"

reply-channel="reply"

mapped-reply-headers="amqp*,correlationId" mapped-request-headers="amqp*,correlationId"/>

最佳答案 问题是S.I.不知道扇出交换的拓扑结构.

最简单的方法是使用自定义发布策略

release-strategy-expression="size() == 2"

在聚合器上(假设扇出为2).所以,你不需要序列大小;你可以避免使用标题扩充器“滥用”发布/订阅者频道…

您可以使用消息ID避免创建新的UUID,消息ID已经是唯一的…

最后,您可以通过添加将correlationId标头传递给AMQP

mapped-request-headers="correlationId"

到你的amqp端点.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动手写了一个Ibatis的Demo,反正啥东西,看着都是挺停简单的,Ibatis不就是一个ORM访问数据的东西嘛,不过在实际的动手的过程之中,还是需要到一些问题: 1)缺少这包,缺少那包的;还好用maven只要知道包的版本和2个ID,就不用自己到处找下载地址了。 2)使用的第三方框架太多,log4j输出太多,看起来费劲啊,另外一般异常日志也是一出就是一堆,不认真看,根本看不出问题在哪。在windows下用.net开发,早习惯了debugview去看(用好degbugview的过滤和高亮,可以让你第一眼就看到你想关注的信息);好几天一直在找一个类似的eclipse插件,不过还是无果而终。现在暂时自定义一个LogAppender去自己搞一个简单的过滤吧(这块有兴趣的可以去看org.ibatis.demo.core.log下代码)。 不知道为啥Spring这家伙为啥在java下有那么高的地位,感觉走到哪里都要用到它,不过无可否认javaSpring本身对于常见的框架都提供了很好的集成。很早以前.net和java程序员互相说自己好,对方不好的时候,看过过一句话:.net程序员里blog里都是大把的demo,java程序员blog经常是鸟文的摘抄或是翻译。感觉确实如此啊,java很少搜索到完整的demo,几乎都是断章取义的文字和代码。既然我是.net程序员现在再搞java,那么还延续.net程序员良好的习惯吧,上完整demo,也为一些需要的人,提供完整的参考。 Demo代码,没有啥太多的功能,就是对一张表的getAll(),然后输出结果的count值(.net下习惯了list.count,java是size,唉,老不习惯了,多写写java估计以后又习惯size,为啥人总是那么纠结呢?),数据库就不上了,大家要跑起来的话自己改改连库信息和实体代码以及xml的配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值