SpringBoot整合activeMQ之队列生产者
Queue
queue producer
1.新建Maven工程并设置包名类名
1.1 工程名 boot_mq_produce
1.2 包名 com.luo.boot.activemq

2.配置pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.luo</groupId> <artifactId>boot_mq_produce</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.4.2</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
3.application.yml

4.配置Bean
package com.luo.boot.activemq.config; import org.apache.activemq.command.ActiveMQQueue; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.jms.annotation.EnableJms; import org.springframework.stereotype.Component; import javax.jms.Queue; @Component @EnableJms public class ConfigBean { @Value("${myqueue}") private String myQueue; @Bean public Queue queue(){ return new ActiveMQQueue(myQueue); } }
5.Queue_produce
package com.luo.boot.activemq.produce; 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; @Component public class Queue_Produce { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Queue queue; public void produceMsg(){ jmsMessagingTemplate.convertAndSend(queue, "****:"+ UUID.randomUUID().toString().substring(0,6)); } }
6.主启动类MainApp_Produce
package com.luo.boot.activemq; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MainApp_Produce { public static void main(String[] args) { SpringApplication.run(MainApp_Produce.class, args); } }
7.测试单元
import com.luo.boot.activemq.MainApp_Produce; import com.luo.boot.activemq.produce.Queue_Produce; 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 javax.annotation.Resource; @SpringBootTest(classes = MainApp_Produce.class) @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration public class MyTestMQ { @Resource private Queue_Produce queue_produce; @Test public void testSend() throws Exception{ queue_produce.produceMsg(); } }
最终测试效果
控制台


新需求:要求每间隔三秒,往MQ里推送消息
1. 修改Queue_produce,在其中新增定时投递方法
// 间隔时间3s定投 @Scheduled(fixedDelay = 3000) public void produceMsgScheduled(){ jmsMessagingTemplate.convertAndSend(queue, "****Scheduled:"+ UUID.randomUUID().toString().substring(0,6)); System.out.println("*********produceMsgScheduled send OK**************");
2. 修改主启动类
@SpringBootApplication @EnableScheduling public class MainApp_Produce { public static void main(String[] args) { SpringApplication.run(MainApp_Produce.class, args); } }
3.直接开启主启动类,间隔发消息OK


浙公网安备 33010602011771号