Spring JmsTemplate - 添加自定义 属性
Spring JmsTemplate - add custom Property
我正在使用 Spring API 的 JmsTemplate
和 MappingJackson2MessageConverter
(版本:spring-jms-4.3.4.RELEASE.jar
)发布消息
到 ActiveMQ 主题,如下面的代码所示。
主题发布者class:
@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 class:
@Configuration
public class JMSTextMessageConverter {
@Bean
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter mappingJackson2MessageConverter
= new MappingJackson2MessageConverter();
mappingJackson2MessageConverter.setTargetType(MessageType.TEXT);
mappingJackson2MessageConverter.setTypeIdPropertyName("_type");
return mappingJackson2MessageConverter;
}
}
现在,我想为发布到主题的 JMS 消息设置一些自定义 headers。
我用谷歌搜索并找不到任何这样做的例子。你能帮忙吗?
您可以使用 JmsTemplate
中的 convertAndSend
方法添加自定义属性,方法是发送 MessagePostProcessor
,如下所示:
jmsTemplate.convertAndSend("product.topic", product, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws JMSException {
message.setStringProperty("my_property", "my_value");
return message;
}
});
尝试这样的事情:
@SendTo("product.topic")
public Message<Product> send() {
Product product = new Product();
product.setName("abcd");
product.setPrice(10);
return MessageBuilder
.withPayload(product)
.setHeader("code", 1234) // custom header name and value
.build();
}
参考:https://spring.io/blog/2014/04/30/spring-4-1-s-upcoming-jms-improvements
我正在使用 Spring API 的 JmsTemplate
和 MappingJackson2MessageConverter
(版本:spring-jms-4.3.4.RELEASE.jar
)发布消息
到 ActiveMQ 主题,如下面的代码所示。
主题发布者class:
@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 class:
@Configuration
public class JMSTextMessageConverter {
@Bean
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter mappingJackson2MessageConverter
= new MappingJackson2MessageConverter();
mappingJackson2MessageConverter.setTargetType(MessageType.TEXT);
mappingJackson2MessageConverter.setTypeIdPropertyName("_type");
return mappingJackson2MessageConverter;
}
}
现在,我想为发布到主题的 JMS 消息设置一些自定义 headers。 我用谷歌搜索并找不到任何这样做的例子。你能帮忙吗?
您可以使用 JmsTemplate
中的 convertAndSend
方法添加自定义属性,方法是发送 MessagePostProcessor
,如下所示:
jmsTemplate.convertAndSend("product.topic", product, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws JMSException {
message.setStringProperty("my_property", "my_value");
return message;
}
});
尝试这样的事情:
@SendTo("product.topic")
public Message<Product> send() {
Product product = new Product();
product.setName("abcd");
product.setPrice(10);
return MessageBuilder
.withPayload(product)
.setHeader("code", 1234) // custom header name and value
.build();
}
参考:https://spring.io/blog/2014/04/30/spring-4-1-s-upcoming-jms-improvements