本文共 4725 字,大约阅读时间需要 15 分钟。
pom.xml
4.0.0 org.example sprinboot_activemq 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.1.5.RELEASE UTF-8 1.8 1.8 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-activemq 2.1.5.RELEASE org.springframework.boot spring-boot-maven-plugin
application.yml
server: port: 7777spring: activemq: broker-url: tcp://localhost:61616 #自己的MQ服务器地址 user: admin password: admin jms: pub-sub-domain: false # false: Queue true:Topic#自己定义队列名称myqueue: boot-activemq-queue
package pers.zhang.config; import org.apache.activemq.command.ActiveMQQueue; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import javax.jms.Queue;@Component@EnableJms//开启JMS适配注解public class ConfigBean { @Value("${myqueue}") private String myqueue; @Bean public Queue queue(){ return new ActiveMQQueue(myqueue); }}
package pers.zhang.test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jms.core.JmsMessagingTemplate;import org.springframework.stereotype.Component;import javax.jms.Queue;import java.util.UUID;@Componentpublic class Queue_Produce { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Queue queue; public void produceMsg(){ jmsMessagingTemplate.convertAndSend(queue, "*****" + UUID.randomUUID().toString().substring(0, 6)); }}
@SpringBootApplicationpublic class MainApp_Produce { public static void main(String[] args) { SpringApplication.run(MainApp_Produce.class, args); }}
package pers.zhang;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.web.WebAppConfiguration;import pers.zhang.test.Queue_Produce;import javax.annotation.Resource;@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = MainApp_Produce.class)@WebAppConfigurationpublic class TestActive { @Resource private Queue_Produce queue_produce; @Test public void testSend() throws Exception{ queue_produce.produceMsg(); }}
运行测试方法:
每隔3秒向MQ推送消息:
增加Queue_Produce定时投递方法://间隔3定时投递 @Scheduled(fixedDelay = 3000) public void produceMdgScheduled(){ jmsMessagingTemplate.convertAndSend(queue, "*****" + UUID.randomUUID().toString().substring(0, 6)); System.out.println("3秒一次..."); }
修改主启动类MainApp_Produce:
@SpringBootApplication@EnableScheduling//开启public class MainApp_Produce { public static void main(String[] args) { SpringApplication.run(MainApp_Produce.class, args); }}
运行主启动类,控制台打印:
3秒一次...3秒一次...3秒一次...
创建Maven工程,pom.xml与生产者一致。
配置application.yml
server: port: 8888spring: activemq: broker-url: tcp://localhost:61616 #自己的MQ服务器地址 user: admin password: admin jms: pub-sub-domain: false # false: Queue true:Topic#自己定义队列名称myqueue: boot-activemq-queue
监听消息:
package pers.zhang.activemq;import org.springframework.jms.annotation.JmsListener;import org.springframework.stereotype.Component;import javax.jms.JMSException;import javax.jms.TextMessage;@Componentpublic class Queue_Consumer { @JmsListener(destination = "${myqueue}") public void receive(TextMessage textMessage)throws JMSException { System.out.println("消费者收到消息:" + textMessage.getText()); }}
@SpringBootApplicationpublic class MainApp_Consumer { public static void main(String[] args) { SpringApplication.run(MainApp_Consumer.class, args); }}
运行,控制台打印:
消费者收到消息:*****88d60d消费者收到消息:*****b9c57e消费者收到消息:*****5116ae消费者收到消息:*****b59d0b消费者收到消息:*****0806c6消费者收到消息:*****af7056消费者收到消息:*****9895bd
转载地址:http://ubpqb.baihongyu.com/