我使用
Spring API的jmstemplate和MappingJackson2MessageConverter(版本:spring-jms-4.3.4.RELEASE.jar)来发布消息
到ActiveMQ主题,如下面的代码所示.
到ActiveMQ主题,如下面的代码所示.
Topicpublisher类:
@Component
public class Topicpublisher {
@Autowired
private jmstemplate jmstemplate;
@Autowired
private MessageConverter messageConverter;
public void send() {
Product product = new Product();
product.setName("abcd");
product.setPrice(10);
jmstemplate.setMessageConverter(messageConverter);
jmstemplate.convertAndSend("product.topic",product);
}
}
MappingJackson2MessageConverter类:
@Configuration
public class JMSTextMessageConverter {
@Bean
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter mappingJackson2MessageConverter
= new MappingJackson2MessageConverter();
mappingJackson2MessageConverter.settargettype(MessageType.TEXT);
mappingJackson2MessageConverter.setTypeIdPropertyName("_type");
return mappingJackson2MessageConverter;
}
}
现在,我想为发布到主题的JMS消息设置一些自定义标头.
我用谷歌搜索,找不到任何这样做的例子.你能帮我吗 ?
解决方法
您可以通过发送MessagePostProcessor从jmstemplate使用convertAndSendmethod添加自定义属性,如下所示:
jmstemplate.convertAndSend("product.topic",product,new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws JMSException {
message.setStringProperty("my_property","my_value");
return message;
}
});