JMS - 消息选择器如何与多个队列和主题使用者一起工作?

Ste*_*mon 8 java messaging jms java-ee

假设您有一个JMS队列,并且多个消费者正在查看队列中的消息.您希望其中一个消费者获得所有特定类型的消息,因此您决定使用消息选择器.

例如,您可以在名为的JMS消息头中定义一个属性targetConsumer.您的消息选择器,您应用于称为的消费者A,就像是WHERE targetConsumer = 'CONSUMER_A'.

很明显,消费者A现在只是抓住具有属性集的消息,就像在示例中一样.但是,其他消费者是否会意识到这一点?IOW,CONSUMER_A如果它在消费者之前查看队列,那么另一个不受消息选择器限制的消费者会抓取消息A吗?我是否需要将消息选择器应用于WHERE targetConsumer <> 'CONSUMER_A'其他人?

我现在正在RTFMing并收集经验数据,但希望有人可能知道他们的头脑.

Vin*_*lds 6

当多个使用者使用相同的队列时,需要在这些使用者之间正确配置消息选择器,以便在确定目标消费者时不会发生冲突.

对于消息驱动Bean(JMS消息的使用者),可以在ejb-jar.xml文件中指定选择器,从而允许在部署时完成配置(而不是指定相反的视图)开发期间的消息选择器).

编辑:在现实生活中,当不同的消费者负责处理包含写在同一队列上的相同标题(通常由同一生产者生成)的消息时,这将是有意义的.例如,消息选择可以在交易应用中使用,购买和卖单进行区分,当制片人是不能写的JMS消息到两个独立的买入和卖出队列.