Java RabbitMq:使用同一队列使用不同的消息

Java RabbitMq:使用同一队列使用不同的消息,java,rabbitmq,spring-rabbit,Java,Rabbitmq,Spring Rabbit,关于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) 发布邮件时,我使

关于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)

当我使用消息时,我使用2个不同的队列:

  • 队列1:com.my.queue.DataModel1
  • 队列2:com.my.queue.DataModel2
  • 使用上述方法,所有消息都将在queue1和queue2中处理。队列1中的某些消息(特定于队列2的消息)将被忽略,反之亦然


    有没有办法只在一个队列中处理这类消息?不确定使用相关id区分这些消息是否是一种好方法。例如,在消费者中:如果存在相关id,则执行数据模型2的特定逻辑否则执行数据模型1的特定逻辑

    AMPQ协议中的消息从制作人exchange决定将此消息或该消息放置到哪个绑定队列。因此,关于两个队列的逻辑是正确的,只有真正找出正确的路由逻辑才是问题所在

    请考虑调查不同的Exchange类型,以确定哪一个是基于元数据的最佳逻辑: