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!!!"); } } }
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于