如何在发送JMS消息或发送到特定服务器之前按消息类型进行过滤?

时间:2013-02-17 17:26:32

标签: jms activemq

假设Active MQ是代理,并且有6个服务器连接了JMS侦听器。

当发送主题时,所有六个服务器都将使用这些消息。

现在我希望特定服务器只使用消息而不是全部六个使用选择器,并且应该在发送JMS之前对其进行过滤。

如何在JMS中定义选择器,以便主题将由特定服务器而不是所有服务器使用。

1 个答案:

答案 0 :(得分:2)

您需要JMS message selectors。发送前无需过滤,但收到后无需过滤。仅ID为“serv_5”的服务器收到消息的示例:

制片:

...
Message message = session.createMessage();
message.setObjectProperty("server_id", "serv_5");
producer.send(message);

消费者(MDB):

@MessageDriven(mappedName="jms/YourQueue", activationConfig =  {
        @ActivationConfigProperty(propertyName = "acknowledgeMode",
                                  propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType",
                                  propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(
                                  propertyName="messageSelector",
                                  propertyValue="server_id = 'serv_5'")

    })
public class YourMessageBean implements MessageListener { ..
相关问题