我们的应用程序有一个带有侦听器容器的amqp入站通道适配器,我们可以动态添加和删除队列名称。
我们希望利用RabbitMQ的BCC(发件人选择的分发)功能,您可以将BCC标头设置为收件人路由键集合。这将有利于RabbitMQ分发消息,而不是让Spring Integration创建副本(可能是数千个)并单独发送它们。
问题在于,当RabbitMQ发送消息时,它会按预期移除BCC字段,并且不会将接收方的路由密钥放在接收的路由密钥头中。此外,似乎无法将消息映射到它来自的队列。因此应用程序不知道"谁"该消息用于(队列名称/路由 - 它来自的队列的密钥)。
以前我们使用收到的路由密钥来识别收件人。
我们考虑了两种方法。
1)为需要侦听的每个队列动态创建入站通道适配器,该适配器具有动态创建的标头扩充器,以添加它正在侦听的收件人标头=队列名称。
2)动态创建一个子类侦听器容器,该容器包含一个队列名称属性,该属性将其消息发送到网关以将其恢复到集成流程中。
如果没有收到路由密钥标题,有人可以帮我们确定邮件来自哪个队列吗?
答案 0 :(得分:0)
Artem Bilan是正确的,我使用的是旧版本的S-AMQP,它不支持该属性。我升级到S-AMQP 1.4.2,我的CONSUMER_QUEUE属性就在那里。