集成Artemis


ActiveMQ Artemis是一个JMS服务器,在集成JMS一节中我们已经详细讨论了如何在Spring中集成Artemis,本节我们讨论如何在Spring Boot中集成Artemis。

我们还是以实际工程为例,创建一个springboot-jms工程,引入的依赖除了spring-boot-starter-webspring-boot-starter-jdbc等以外,新增spring-boot-starter-artemis

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-artemis</artifactId>
  4. </dependency>

同样无需指定版本号。

如何创建Artemis服务器我们已经在集成JMS一节中详细讲述了,此处不再重复。创建Artemis服务器后,我们在application.yml中加入相关配置:

  1. spring:
  2. artemis:
  3. # 指定连接外部Artemis服务器,而不是启动嵌入式服务:
  4. mode: native
  5. # 服务器地址和端口号:
  6. host: 127.0.0.1
  7. port: 61616
  8. # 连接用户名和口令由创建Artemis服务器时指定:
  9. user: admin
  10. password: password

和Spring版本的JMS代码相比,使用Spring Boot集成JMS时,只要引入了spring-boot-starter-artemis,Spring Boot会自动创建JMS相关的ConnectionFactoryJmsListenerContainerFactoryJmsTemplate等,无需我们再手动配置了。

发送消息时只需要引入JmsTemplate

  1. @Component
  2. public class MessagingService {
  3. @Autowired
  4. JmsTemplate jmsTemplate;
  5. public void sendMailMessage() throws Exception {
  6. String text = "...";
  7. jmsTemplate.send("jms/queue/mail", new MessageCreator() {
  8. public Message createMessage(Session session) throws JMSException {
  9. return session.createTextMessage(text);
  10. }
  11. });
  12. }
  13. }

接收消息时只需要标注@JmsListener

  1. @Component
  2. public class MailMessageListener {
  3. final Logger logger = LoggerFactory.getLogger(getClass());
  4. @JmsListener(destination = "jms/queue/mail", concurrency = "10")
  5. public void onMailMessageReceived(Message message) throws Exception {
  6. logger.info("received message: " + message);
  7. }
  8. }

可见,应用程序收发消息的逻辑和Spring中使用JMS完全相同,只是通过Spring Boot,我们把工程简化到只需要设定Artemis相关配置。

练习

集成Artemis - 图1下载练习:在Spring Boot中使用Artemis (推荐使用IDE练习插件快速下载)

小结

在Spring Boot中使用Artemis作为JMS服务时,只需引入spring-boot-starter-artemis依赖,即可直接使用JMS。

读后有收获可以支付宝请作者喝咖啡:

集成Artemis - 图2