Active MQ 入门 2,Spring Boot 整合 Active MQ

本贴最后更新于 1860 天前,其中的信息可能已经时移世易

Active MQ 入门 2,Spring Boot 整合 Active MQ

1、搭建 Spring Boot 项目

首先创建一个 Spring Boot 的项目,在 pom 文件中加入:

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>

加入 Spring Boot 对 Active MQ 支持的 starter 包:starter-activemq
还有 Active MQ 的连接池:activemq-pool

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> </dependency>

2、配置相关信息

在 application.properties 加入 Active MQ 的相关配置信息

spring.activemq.broker-url=tcp://localhost:61616 spring.activemq.user=admin spring.activemq.password=admin spring.activemq.pool.enabled=true

3、编写配置类

Spring Boot 规定必须配置 Active MQ 的连接工厂,和 Spring 的配置方法一样,只不过这是注解与 Java 代码的方式进行配置

@Configuration @EnableJms public class ActiveMqConfiguration { @Value("${spring.activemq.user}") private String usrName; @Value("${spring.activemq.password}") private String password; @Value("${spring.activemq.broker-url}") private String brokerUrl; @Bean public ConnectionFactory connectionFactory(){ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); connectionFactory.setBrokerURL(brokerUrl); connectionFactory.setUserName(usrName); connectionFactory.setPassword(password); return connectionFactory; } @Bean("jmsTopicListenerContainerFactory") public JmsListenerContainerFactory jmsTopicListenerContainerFactory( ConnectionFactory connectionFactory ){ DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setPubSubDomain(true); return factory; } }

4、发送端代码(生产者)

@Service public class ProducerQueue { @Autowired private JmsMessagingTemplate jmsTemplate;//简单操作 @Autowired private JmsTemplate template;//可以做更细微的控制 // 发送消息,destination是发送到的队列,message是待发送的消息 public void sendMessageByJmsMessagingTemplate(Destination destination, final String message){ jmsTemplate.convertAndSend(destination, message); } public void sendMessageByJmsTemplate(Destination destination, final String message){ template.send(destination, session -> { TextMessage msg = session.createTextMessage(); msg.setText(message + "othre information"); return msg; }); } }

5、接收端代码(消费者)

@Component public class ConsumerAQueue { // 使用JmsListener配置消费者监听的队列,其中text是接收到的消息 @JmsListener(destination = "springboot.queue") public void receiveQueue(String text){ System.out.println(this.getClass().getName()+" receive msg:"+text); } }

6、编写测试类

首先我们启动 Spring Boot 程序。
然后我们在 test 目录下编写测试类

@RunWith(SpringRunner.class) @SpringBootTest public class AmSpringbootApplicationTests { @Autowired private ProducerQueue producerQueue; @Test public void testQueueNormal() { Destination destination = new ActiveMQQueue("springboot.queue"); for(int i=0; i<3; i++){ producerQueue.sendMessageByJmsMessagingTemplate(destination, "NO:"+i+";my name is Mark!!!"); } } }
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 678 关注
  • 消息队列
    40 引用 • 52 回帖 • 2 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    946 引用 • 1460 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...