7

我正在尝试将消息头插入 amq。JMSTemplate 中没有用于在 amq 中设置标头的特定方法。当我这样设置时,它将保存在StringProperty而不是标题中。为了保存到标题中如何传递数据

 amqTemplate.convertAndSend(goMQ, message,new MessagePostProcessor() {
      @Override
        public Message postProcessMessage(Message message) throws JMSException {
            message.setStringProperty("test1","testdata");
            message.setStringProperty("country","US");
          //setObjectProperty -- also set the string property 
            return message;
        }
    });

我需要将数据发送到标头中,客户端将为我的消息标头实现选择器。

4

1 回答 1

0

您通过设置字符串属性来做对了。现在您的客户端应该能够接收基于消息选择器的消息。

例如在 jms 中,客户端将仅收到国家“美国”的消息,其设置如下:

           <activation-config>
                <activation-config-property>
                    <activation-config-property-name>destinationType</activation-config-property-name>
                    <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                    <activation-config-property-name>destinationJNDIName</activation-config-property-name>
                    <activation-config-property-value>jms/queueName</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                    <activation-config-property-name>messageSelector</activation-config-property-name>
                    <activation-config-property-value>country='US'</activation-config-property-value>
                </activation-config-property>
            </activation-config>
于 2017-09-21T15:23:07.417 回答