Spring integration 如何在没有收到路由密钥的SimpleMessageListenerContainer中跟踪消息来自哪个队列

Spring integration 如何在没有收到路由密钥的SimpleMessageListenerContainer中跟踪消息来自哪个队列,spring-integration,spring-amqp,Spring Integration,Spring Amqp,我们的应用程序有一个amqp入站通道适配器和一个侦听器容器,我们在其中动态添加和删除队列名称 我们希望利用RabbitMQ的BCC(发送方选择的分发)功能,您可以将BCC头设置为接收方路由密钥的集合。让RabbitMQ分发消息,而不是让Spring Integration创建副本(可能有数千个)并单独发送,这将是有益的 问题在于,当RabbitMQ发送消息时,它会像预期的那样删除BCC字段,并且不会将收件人的路由密钥放在接收到的路由密钥头中。而且,似乎无法将消息映射到它来自的队列。因此,应用程序

我们的应用程序有一个amqp入站通道适配器和一个侦听器容器,我们在其中动态添加和删除队列名称

我们希望利用RabbitMQ的BCC(发送方选择的分发)功能,您可以将BCC头设置为接收方路由密钥的集合。让RabbitMQ分发消息,而不是让Spring Integration创建副本(可能有数千个)并单独发送,这将是有益的

问题在于,当RabbitMQ发送消息时,它会像预期的那样删除BCC字段,并且不会将收件人的路由密钥放在接收到的路由密钥头中。而且,似乎无法将消息映射到它来自的队列。因此,应用程序不知道消息要发送给谁(它来自的队列的队列名称/路由密钥)

以前,我们使用收到的路由密钥来标识收件人

我们考虑了两种方法

1) 为每个需要侦听的队列动态创建一个入站通道适配器,该队列具有一个动态创建的头enricher,以添加一个收件人头=它正在侦听的队列名称

2) 动态创建一个子类侦听器容器,该容器包含一个队列名称属性,该属性将其消息发送到网关以使其返回集成流


有人能帮我们确定没有收到路由密钥头的消息来自哪个队列吗?

Artem Bilan是正确的,我使用的是不支持该属性的较旧版本的S-AMQP。我升级到S-AMQP 1.4.2,我的消费者队列属性就在那里。

难道
AmqpHeaders.CONSUMER\u QUEUE
还不够吗?从SI-4.1.2和S-AMQP-1.4.2井开始提供,这就是问题所在。我使用的是SpringBootStarter父版本1.2.1.release,它只提供了SI 4.1.4和S-AMQP1.4.1。我要升级。谢谢你的帮助。