Отправить сообщение в очередь JMS с помощью Spring Boot - PullRequest
1 голос
/ 18 июня 2020

Я новичок в Spring JMS. Мое приложение разработано с использованием Spring Boot и развернуто в JBoss EAP 7.2.0. У меня есть удаленная очередь, которая представляет собой очередь Active MQ Artemis, которая также встроена в JBoss EAP 7.2.0. Может ли кто-нибудь предложить мне, как отправить сообщение в удаленную очередь JMS с помощью JmsTemplate из Spring Boot? В основном я не понимаю, как мне определить удаленную фабрику соединений для подключения к удаленной очереди.

1 Ответ

1 голос
/ 18 июня 2020
  1. Добавьте следующее в свойства приложения, когда ваше приложение развернуто на сервере приложений
  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>
Autowire jmsTemplate и отправить сообщение
@Component
public class MyMessageSender {

        @Autowired
        JmsTemplate jmsTemplate;


        public void send(String msg){
                jmsTemplate.convertAndSend("my.queue.name", msg);
        }
}
При желании вы можете настроить конвертеры сообщений и отправлять pojos как сообщения, и пусть 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;
    }
...