使用 Spring 引导将消息发送到 JMS 队列
Send message to a JMS queue using Spring Boot
我是 Spring JMS 的新手。我的应用程序是使用 Spring Boot 开发的,并部署在 JBoss EAP 7.2.0 中。我有一个远程队列,它是一个 Active MQ Artemis 队列,它也嵌入在 JBoss EAP 7.2.0 中。谁能建议我如何使用 Spring Boot 的 JmsTemplate 向远程 JMS 队列发送消息?基本上我不知道应该如何定义远程 connectionFactory 以连接到远程队列。
- 将以下内容添加到应用程序属性中,因为您的应用程序已部署在应用程序服务器中
spring.jms.jndi-name=java:/<your connection factory name for artemis>
- 添加 artemis 依赖并让 spring 启动自动配置 jmsTemplate
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-artemis</artifactId>
</dependency>
- 自动装配 jmsTemplate 并发送消息
@Component
public class MyMessageSender {
@Autowired
JmsTemplate jmsTemplate;
public void send(String msg){
jmsTemplate.convertAndSend("my.queue.name", msg);
}
}
- 您可以选择配置消息转换器并将 pojo 作为消息发送,让 spring 负责将其转换为 json。例如
@Bean // Serialize message content to json using TextMessage
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
}
我是 Spring JMS 的新手。我的应用程序是使用 Spring Boot 开发的,并部署在 JBoss EAP 7.2.0 中。我有一个远程队列,它是一个 Active MQ Artemis 队列,它也嵌入在 JBoss EAP 7.2.0 中。谁能建议我如何使用 Spring Boot 的 JmsTemplate 向远程 JMS 队列发送消息?基本上我不知道应该如何定义远程 connectionFactory 以连接到远程队列。
- 将以下内容添加到应用程序属性中,因为您的应用程序已部署在应用程序服务器中
spring.jms.jndi-name=java:/<your connection factory name for artemis>
- 添加 artemis 依赖并让 spring 启动自动配置 jmsTemplate
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-artemis</artifactId>
</dependency>
- 自动装配 jmsTemplate 并发送消息
@Component
public class MyMessageSender {
@Autowired
JmsTemplate jmsTemplate;
public void send(String msg){
jmsTemplate.convertAndSend("my.queue.name", msg);
}
}
- 您可以选择配置消息转换器并将 pojo 作为消息发送,让 spring 负责将其转换为 json。例如
@Bean // Serialize message content to json using TextMessage
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
}