rabbitmq:使用同一队列使用不同的消息

erhoui1w  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(456)

关于rabbitmq消费者,我有以下问题:
消息模型1:

String name; //apple  //audi
String type; //fruit  //car

消息模型2:

String name; //apple  //audi
String type; //fruit  //car
+
correlation_id: e.g a mapping id used in business logic: 1234567

(它们之间的唯一区别是作为元数据的相关id)
发布消息时,我使用以下路由密钥:com.my.routingkey(对于数据模型1和数据模型2)
当我使用消息时,我使用两个不同的队列:
队列1:com.my.queue.datamodel1
队列2:com.my.queue.datamodel2
使用上述方法,所有消息都将在队列1和队列2中处理。队列1中的某些消息(那些特定于队列2的消息)将被忽略,反之亦然。
有没有办法只在一个队列中处理这类消息?不确定使用关联id区分这些消息是否是一种好方法。例如,在消费者中:如果存在关联id,则执行特定于数据模型2的逻辑,否则执行特定于数据模型1的逻辑

lsmepo6l

lsmepo6l1#

ampq协议中的消息被放入来自生产者的交换中。交换决定将此消息或该消息放置到哪个绑定队列。因此,关于两个队列的逻辑是正确的,只有真正找出正确的路由逻辑才是问题所在。
请考虑调查不同的exchange类型,以确定哪种类型是基于该元数据的最佳逻辑:
https://www.rabbitmq.com/tutorials/amqp-concepts.html

相关问题