国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

淺談Spring Boot 整合ActiveMQ的過(guò)程

2024-07-13 10:15:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

RabbitMQ是比較常用的AMQP實(shí)現(xiàn),這篇文章是一個(gè)簡(jiǎn)單的Spring boot整合RabbitMQ的教程。

安裝ActiveMQ服務(wù)器,(也可以不安裝,如果不安裝,會(huì)使用內(nèi)存mq)

構(gòu)建Spring boot項(xiàng)目,增加依賴項(xiàng),只需要添加這一項(xiàng)即可

<!-- 添加acitivemq依賴 --><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-activemq</artifactId></dependency>

增加Application類

@SpringBootApplication@EnableScheduling //使用定時(shí)任務(wù)發(fā)送消息public class MqTestApplication {  public static void main(String[] args) {    SpringApplication.run(MqTestApplication.class, args);  }}

配置application.yml

spring: activemq:  broker-url: tcp://127.0.01:61616  packages:   trust-all: true

構(gòu)建一個(gè)數(shù)據(jù)Model,可以發(fā)送和消費(fèi)的數(shù)據(jù)類型有: String, byte array, Map<String,?>, Serializable object.

// 如果發(fā)送的消息是一個(gè)對(duì)象,必須implements Serializable接口public class TModel implements Serializable {  private static final long serialVersionUID = -921008687184331557L;  private int count;  public TModel(int count) {    this.count = count;  }  @Override  public String toString() {    return "TModel [count=" + count + "]";  }}

構(gòu)建Producer

@Componentpublic class Producer {  // 在Producer中注入JmsTemplate,我們可以通過(guò)這個(gè)template發(fā)送消息  private final JmsTemplate jmsTemplate;  private int count = 0;  @Autowired  public Producer(JmsTemplate jmsTemplate) {    this.jmsTemplate = jmsTemplate;  }  // 這里使用Spring Boot的定時(shí)任務(wù)發(fā)送消息  @Scheduled(fixedRate = 1000)  public void create() {    // 使用convertAndSend發(fā)送消息    jmsTemplate.convertAndSend("queue1", new TModel(count++));  }}

構(gòu)建Consumer

@Componentpublic class Consumer {  @JmsListener(destination = "queue1")  public void comsume(TModel content) {    System.out.println("recive message from queue1 [" + content + "]");  }}

特別備注:如果我們的生產(chǎn)者和消費(fèi)者在不同的Module中時(shí),最好將要消費(fèi)的數(shù)據(jù)抽象成公共Module.程序是通過(guò)Serializable來(lái)序列化和反序列化對(duì)象的。必須保證生產(chǎn)者和消費(fèi)者的對(duì)象模型的serialVersionUID是一致的。

項(xiàng)目地址: https://github.com/ldwqh0/active-mq-spring.git

示例:配置rabbitmq ,增加一個(gè)隊(duì)列

@Configurationpublic class Aqueue {@Beanpublic Queue queue() {return new Queue("good");}}

定義一個(gè)生產(chǎn)者.

當(dāng)啟用activemq之后,會(huì)自動(dòng)創(chuàng)建一個(gè)AmqpTemplate ,可以被注入到任何需要的地方,我們可以通過(guò)這個(gè)AmqpTemplate發(fā)送消息到MQ中

/*** 定義一個(gè)生產(chǎn)者* @author LiDong*/@RestController@RequestMapping("/test")public class SendController {@Autowiredprivate AmqpTemplate template;@GetMappingpublic String testSend() {// 使用AmqpTemplate發(fā)送消息template.convertAndSend("good", "good");return "success";}}

定義消費(fèi)者,通過(guò)指定RabbitListener(queues='good')指定消費(fèi)的隊(duì)列

@Componentpublic class Consumer {/*** 定義一個(gè)消費(fèi)者* @param message*/@RabbitListener(queues = "good")public void handler(String message) {System.out.println("recive message from " + message);}}

啟動(dòng)測(cè)試,在瀏覽器中輸入 http://localhost:8080/test 即可發(fā)送一條消息到隊(duì)列中。 該對(duì)列可以被消費(fèi)者處理

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 密山市| 石门县| 神农架林区| 富民县| 通辽市| 田东县| 蕉岭县| 搜索| 略阳县| 无极县| 凤翔县| 巴林左旗| 高青县| 庆云县| 石城县| 宜黄县| 江都市| 赣榆县| 米脂县| 八宿县| 吉安县| 福海县| 宜宾县| 奉新县| 礼泉县| 平顺县| 华蓥市| 长武县| 西和县| 朝阳县| 菏泽市| 永康市| 梓潼县| 曲靖市| 宁德市| 合阳县| 庆元县| 古丈县| 滦南县| 德昌县| 游戏|