日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot 整合ActiveMQ_企业实战

發(fā)布時間:2024/9/27 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot 整合ActiveMQ_企业实战 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 1. 新建Springboot工程
  • 2. 引入maven依賴
  • 3. ActiveMq配置類
  • 4. MQ生產(chǎn)者
  • 5. MQ 點對點消費者
  • 6. MQ 發(fā)布點閱消費者A
  • 7. MQ 發(fā)布點閱消費者B
  • 8. 統(tǒng)一測試類

1. 新建Springboot工程



2. 引入maven依賴

<?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.gblfy</groupId><artifactId>springboot-activemq</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-activemq</name><description>Spring Boot集成Activemq</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><!--全局編碼設置--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--JDK版本--><java.version>1.8</java.version><!--全局版本--><fastjson.version>1.2.58</fastjson.version><lombok.version>1.18.8</lombok.version></properties><dependencies><!--SpringMVC 啟動器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Activemq Start--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-pool</artifactId></dependency><!-- Activemq End--><!--數(shù)據(jù)處理--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!--單元測試--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><!--maven編譯插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3. ActiveMq配置類

package com.gblfy.activemq.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory;import javax.jms.ConnectionFactory;/*** @author gblfy* @ClassNme ActiveMqConfig* @Description Mq配置類* @Date 2019/9/3 18:05* @version1.0*/ @Configuration public class ActiveMqConfig {// queue模式的ListenerContainer@Beanpublic JmsListenerContainerFactory<?> jmsListenerContainerQueue(ConnectionFactory activeMQConnectionFactory) {DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();bean.setConnectionFactory(activeMQConnectionFactory);return bean;}// topic模式的ListenerContainer@Beanpublic JmsListenerContainerFactory<?> jmsListenerContainerTopic(ConnectionFactory activeMQConnectionFactory) {DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();bean.setPubSubDomain(true);bean.setConnectionFactory(activeMQConnectionFactory);return bean;}}

4. MQ生產(chǎn)者

package com.gblfy.activemq.producer;import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.stereotype.Service;import java.io.Serializable; import java.util.List; import java.util.Map;/*** @author gblfy* @ClassNme MqProducer* @Description Mq 生產(chǎn)者封裝公共類* @Date 2019/9/3 18:05* @version1.0*/ @Service public class MqProducer {@Autowiredprivate JmsMessagingTemplate jmsMessagingTemplate;/*** 發(fā)送字符串消息隊列** @param queueName 隊列名稱* @param message 字符串*/public void sendStringQueue(String queueName, String message) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queueName), message);}/*** 發(fā)送字符串集合消息隊列** @param queueName 隊列名稱* @param list 字符串集合*/public void sendStringListQueue(String queueName, List<String> list) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queueName), list);}/*** 發(fā)送Map消息隊列** @param queueName* @param headers*/public void sendMapQueue(String queueName, Map<String, Object> headers) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queueName), headers);}/*** 發(fā)送對象消息隊列** @param queueName 隊列名稱* @param obj 對象*/public void sendObjQueue(String queueName, Serializable obj) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queueName), obj);}/*** 發(fā)送對象集合消息隊列** @param queueName 隊列名稱* @param objList 對象集合*/public void sendObjListQueue(String queueName, List<Serializable> objList) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queueName), objList);}/*** 發(fā)送字符串消息主題** @param topicName 主題名稱* @param message 字符串*/public void sendStringTopic(String topicName, String message) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQTopic(topicName), message);}/*** 發(fā)送字符串集合消息主題** @param topicName 主題名稱* @param list 字符串集合*/public void sendStringListTopic(String topicName, List<String> list) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQTopic(topicName), list);}/*** 發(fā)送Map消息主題** @param queueName* @param headers*/public void sendMapTopic(String queueName, Map<String, Object> headers) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQQueue(queueName), headers);}/*** 發(fā)送對象消息主題** @param topicName 主題名稱* @param obj 對象*/public void sendObjTopic(String topicName, Serializable obj) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQTopic(topicName), obj);}/*** 發(fā)送對象集合消息主題** @param topicName 主題名稱* @param objList 對象集合*/public void sendObjListTopic(String topicName, List<Serializable> objList) {this.jmsMessagingTemplate.convertAndSend(new ActiveMQTopic(topicName), objList);}}

5. MQ 點對點消費者

package com.gblfy.activemq.consumer;import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component;import javax.jms.ObjectMessage; import java.util.List; import java.util.Map;/*** @author gblfy* @ClassNme QueueConsumer* @Description Mq點對點消費者* @Date 2019/9/3 18:05* @version1.0*/ @Component public class QueueConsumer {@JmsListener(destination = "stringQueue", containerFactory = "jmsListenerContainerQueue")public void receiveStringQueue(String msg) {System.out.println("接收到消息...." + msg);}@JmsListener(destination = "stringListQueue", containerFactory = "jmsListenerContainerQueue")public void receiveStringListQueue(List<String> list) {System.out.println("接收到集合隊列消息...." + list);}@JmsListener(destination = "mapQueue", containerFactory = "jmsListenerContainerQueue")public void receiveMapQueue(Map<String, Object> headers) {System.out.println("接收到集合隊列消息...." + headers);}@JmsListener(destination = "objQueue", containerFactory = "jmsListenerContainerQueue")public void receiveObjQueue(ObjectMessage objectMessage) throws Exception {System.out.println("接收到對象隊列消息...." + objectMessage.getObject());}@JmsListener(destination = "objListQueue", containerFactory = "jmsListenerContainerQueue")public void receiveObjListQueue(ObjectMessage objectMessage) throws Exception {System.out.println("接收到的對象隊列消息..." + objectMessage.getObject());} }

6. MQ 發(fā)布點閱消費者A

package com.gblfy.activemq.consumer;import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component;import javax.jms.ObjectMessage; import java.util.List; /*** @author gblfy* @ClassNme ATopicConsumer* @Description Mq訂閱者A* @Date 2019/9/3 18:05* @version1.0*/ @Component public class ATopicConsumer {@JmsListener(destination = "stringTopic", containerFactory = "jmsListenerContainerTopic")public void receiveStringTopic(String msg) {System.out.println("ATopicConsumer接收到消息...." + msg);}@JmsListener(destination = "stringListTopic", containerFactory = "jmsListenerContainerTopic")public void receiveStringListTopic(List<String> list) {System.out.println("ATopicConsumer接收到集合主題消息...." + list);}@JmsListener(destination = "mapTopic", containerFactory = "jmsListenerContainerTopic")public void receiveMapTopic(List<String> list) {System.out.println("ATopicConsumer接收到Map主題消息...." + list);}@JmsListener(destination = "objTopic", containerFactory = "jmsListenerContainerTopic")public void receiveObjTopic(ObjectMessage objectMessage) throws Exception {System.out.println("ATopicConsumer接收到對象主題消息...." + objectMessage.getObject());}@JmsListener(destination = "objListTopic", containerFactory = "jmsListenerContainerTopic")public void receiveObjListTopic(ObjectMessage objectMessage) throws Exception {System.out.println("ATopicConsumer接收到的對象集合主題消息..." + objectMessage.getObject());}}

7. MQ 發(fā)布點閱消費者B

package com.gblfy.activemq.consumer;import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component;import javax.jms.ObjectMessage; import java.util.List;/*** @author gblfy* @ClassNme BTopicConsumer* @Description Mq訂閱者B* @Date 2019/9/3 18:05* @version1.0*/ @Component public class BTopicConsumer {@JmsListener(destination = "stringTopic", containerFactory = "jmsListenerContainerTopic")public void receiveStringTopic(String msg) {System.out.println("BTopicConsumer接收到消息...." + msg);}@JmsListener(destination = "stringListTopic", containerFactory = "jmsListenerContainerTopic")public void receiveStringListTopic(List<String> list) {System.out.println("BTopicConsumer接收到集合主題消息...." + list);}@JmsListener(destination = "objTopic", containerFactory = "jmsListenerContainerTopic")public void receiveObjTopic(ObjectMessage objectMessage) throws Exception {System.out.println("BTopicConsumer接收到對象主題消息...." + objectMessage.getObject());}@JmsListener(destination = "objListTopic", containerFactory = "jmsListenerContainerTopic")public void receiveObjListTopic(ObjectMessage objectMessage) throws Exception {System.out.println("BTopicConsumer接收到的對象集合主題消息..." + objectMessage.getObject());}}

8. 統(tǒng)一測試類

package com.gblfy.activemq.entity;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/*** @author gblfy* @ClassNme User* @Description Mq發(fā)送接送對象模擬* @Date 2019/9/3 18:05* @version1.0*/ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class User implements Serializable {private String id;private String name;private Integer age; } package com.gblfy.activemq;import com.gblfy.activemq.producer.MqProducer; import com.gblfy.activemq.entity.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*** @author gblfy* @ClassNme ActivemqdemoApplicationTests* @Description Mq 測試公共類* @Date 2019/9/3 18:05* @version1.0*/ @RunWith(SpringRunner.class) @SpringBootTest public class ActivemqdemoApplicationTests {@Autowiredprivate MqProducer mqProducer;/**************************MQ點對點測試場景***************************//*** 點對點場景 01* 消息類型 String*/@Testpublic void testStringQueue() {for (int i = 1; i <= 100; i++) {System.out.println("第" + i + "次發(fā)送字符串隊列消息");mqProducer.sendStringQueue("stringQueue", "消息:" + i);}}/*** 點對點場景 02* 消息類型 StringList*/@Testpublic void testStringListQueue() {List<String> idList = new ArrayList<>();idList.add("id1");idList.add("id2");idList.add("id3");System.out.println("正在發(fā)送集合隊列消息ing......");mqProducer.sendStringListQueue("stringListQueue", idList);}/*** 點對點場景 03* 消息類型 Map<String,Object></String,Object>*/@Testpublic void testMapQueue() {Map<String, Object> map = new HashMap<>();map.put("1", "sxh");map.put("2", "ljy");map.put("3", "sh");map.put("4", "qjj");map.put("5", "ygf");map.put("6", "lxj");map.put("7", "gblfy");System.out.println("正在發(fā)送Map隊列消息ing......");mqProducer.sendMapQueue("mapQueue", map);}/*** 點對點場景 04* 消息類型 Obj*/@Testpublic void testObjQueue() {System.out.println("正在發(fā)送對象隊列消息......");mqProducer.sendObjQueue("objQueue", new User("1", "小明", 20));}/*** 點對點場景 05* 消息類型 ObjList*/@Testpublic void testObjListQueue() {System.out.println("正在發(fā)送對象集合隊列消息......");List<Serializable> userList = new ArrayList<>();userList.add(new User("1", "雨昕", 01));userList.add(new User("2", "劉英", 26));userList.add(new User("3", "振振", 12));mqProducer.sendObjListQueue("objListQueue", userList);}/**************************MQ發(fā)布訂閱測試場景***************************//*** 發(fā)布訂閱場景 01* 消息類型 String*/@Testpublic void testStringTopic() {for (int i = 1; i <= 100; i++) {System.out.println("第" + i + "次發(fā)送字符串主題消息");mqProducer.sendStringTopic("stringTopic", "消息:" + i);}}/*** 發(fā)布訂閱場景 02* 消息類型 StringList*/@Testpublic void testStringListTopic() {List<String> idList = new ArrayList<>();idList.add("id1");idList.add("id2");idList.add("id3");System.out.println("正在發(fā)送集合主題消息ing......");mqProducer.sendStringListTopic("stringListTopic", idList);}/*** 發(fā)布訂閱場景 03* 消息類型 Map*/@Testpublic void testMapTopic() {Map<String, Object> map = new HashMap<>();map.put("1", "sxh");map.put("2", "ljy");map.put("3", "sh");map.put("4", "qjj");map.put("5", "ygf");map.put("6", "lxj");map.put("7", "gblfy");System.out.println("正在發(fā)送Map隊列消息ing......");mqProducer.sendMapTopic("mapQueue", map);}/*** 發(fā)布訂閱場景 04* 消息類型 Obj*/@Testpublic void testObjTopic() {System.out.println("正在發(fā)送對象主題消息......");mqProducer.sendObjTopic("objTopic", new User("1", "小明", 20));}/*** 發(fā)布訂閱場景 05* 消息類型 ObjList*/@Testpublic void testObjListTopic() {System.out.println("正在發(fā)送對象集合主題消息......");List<Serializable> userList = new ArrayList<>();userList.add(new User("1", "雨昕", 01));userList.add(new User("2", "劉英", 26));userList.add(new User("3", "振振", 12));mqProducer.sendObjListTopic("objListTopic", userList);} }

GitLab地址:https://gitlab.com/gb-heima/springboot-activemq
Git下載方式:

git clone git@gitlab.com:gb-heima/springboot-activemq.git

zip包下載方式:
https://gitlab.com/gb-heima/springboot-activemq/-/archive/master/springboot-activemq-master.zip

總結

以上是生活随笔為你收集整理的SpringBoot 整合ActiveMQ_企业实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。