SpringBoot第二十一篇:整合ActiveMQ


作者:追夢1819
原文:https://www.cnblogs.com/yanfei1819/p/11190048.html
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


引言

  前一章節中,我們詳細闡述了 ActiveMQ 的安裝和使用。其實在網站發展壯大的過程中,消息中間件是無法忽視的技術框架,其重要性在前一章也作了詳細的說明。如此重要的技術,SpringBoot 生態圈自然也是不會"放過"的了,必然要集成到它的體系中去。

  本章將闡述 SpringBoot 整合 ActiveMQ。

使用

首先創建項目,引入 maven 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- 該啟動器是后面做測試用,非必須的 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

第二步,配置相關信息:

spring.activemq.broker-url=tcp://xxx:61616
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false

第三步,創建消息生產者:

package com.yanfei1819.activemq.producer;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;
import javax.jms.Destination;

/**
 * Created by 追夢1819 on 2019-06-26.
 */
@Component
public class Producer {
    @Autowired
    private JmsMessagingTemplate template;
    public void sendMessage(Destination destination, String message){
        template.convertAndSend(destination,message);
    }
}

第四步,創建消息消費者:

package com.yanfei1819.activemq.consumer;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;

/**
 * Created by 追夢1819 on 2019-06-26.
 */
@Service
public class Consumer {
    @JmsListener(destination = "active.queue")
    public void receive(String text) {
        System.out.println("consumer接收到的報文為:" + text);
    }
}

最后,創建測試接口:

package com.yanfei1819.activemq.web.controller;

import com.yanfei1819.activemq.producer.Producer;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.jms.Destination;

/**
 * Created by 追夢1819 on 2019-06-26.
 */
@Controller
public class ActivemqController {

    @Autowired
    private Producer producer;

    @ResponseBody
    @RequestMapping("/test")
    public void test(){
        Destination destination=new ActiveMQQueue("active.queue");
        for (int i = 0; i <50 ; i++) {
            producer.sendMessage(destination,"我是追夢1819,我的微信公眾號是 technology-and-life ");
        }
    }
}

對以上代碼作一個簡單的說明:

  1. 為了簡化模型來說明 SpringBoot 中 Activemq 的使用,以上的消息生產者和消息消費者都只做了最簡單的模擬,沒有任何邏輯;
  2. 以上的測試使用接口進行測試(作者比較喜歡這種方式),不局限這種方式,讀者可以用單元測試。

啟動項目,先看看 ActiveMQ 界面:

可以看到生產出來的消息,已經被注入到 ActiveMQ 中去了。

然后再訪問以上測試接口:http://localhost:8080/test,再看 ActiveMQ 界面:

生產者生產的消息,被消費者消費。

控制台的信息是:

  以上演示了 ActiveMQ 在 SpringBoot 項目中的使用。其余的一些詳細的測試,讀者可以按照前一章 ActiveMQ 的說明,自行測試。此處由於篇幅所限,就不做冗余闡述。

總結

  看完以上的示例,讀者應該能繼續感受到 SpringBoot 框架的"開箱即用"的特性和極簡模式。關注幾個注解或者幾個組件,就能用的很順暢。

  但是,還是重復那句,框架的封裝度越高,用起來越簡單,但是對底層的原理的理解越難。如果碰到了問題,也更難追蹤。所以作者建議讀者,特別是新人或者剛接觸 SpringBoot 的讀者,一定要在使用的基礎上,去理解每一個被整合的框架的使用和原理(當然,如果基礎好,能夠讀底層源碼更好了)。萬不可為了使用而使用。就像一個同事說的,如果哪一天 Spring 生態圈被別的框架取代了,那你就失業了。

  憂患意識一定要保持着。


![](https://img2018.cnblogs.com/blog/1183871/201907/1183871-20190715170856893-614409026.png)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM