做者:追夢1819
原文:https://www.cnblogs.com/yanfei1819/p/11190048.html
版權聲明:本文爲博主原創文章,轉載請附上博文連接!html
前一章節中,咱們詳細闡述了 ActiveMQ 的安裝和使用。其實在網站發展壯大的過程當中,消息中間件是沒法忽視的技術框架,其重要性在前一章也做了詳細的說明。如此重要的技術,SpringBoot 生態圈天然也是不會"放過"的了,必然要集成到它的體系中去。java
本章將闡述 SpringBoot 整合 ActiveMQ。web
首先建立項目,引入 maven 依賴:spring
<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>
第二步,配置相關信息:apache
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); } }
第四步,建立消息消費者:app
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 "); } } }
對以上代碼做一個簡單的說明:maven
啓動項目,先看看 ActiveMQ 界面:tcp
能夠看到生產出來的消息,已經被注入到 ActiveMQ 中去了。
而後再訪問以上測試接口:http://localhost:8080/test
,再看 ActiveMQ 界面:
生產者生產的消息,被消費者消費。
控制檯的信息是:
以上演示了 ActiveMQ 在 SpringBoot 項目中的使用。其他的一些詳細的測試,讀者能夠按照前一章 ActiveMQ 的說明,自行測試。此處因爲篇幅所限,就不作冗餘闡述。
看完以上的示例,讀者應該能繼續感覺到 SpringBoot 框架的"開箱即用"的特性和極簡模式。關注幾個註解或者幾個組件,就能用的很順暢。
可是,仍是重複那句,框架的封裝度越高,用起來越簡單,可是對底層的原理的理解越難。若是碰到了問題,也更難追蹤。因此做者建議讀者,特別是新人或者剛接觸 SpringBoot 的讀者,必定要在使用的基礎上,去理解每個被整合的框架的使用和原理(固然,若是基礎好,可以讀底層源碼更好了)。萬不可爲了使用而使用。就像一個同事說的,若是哪一天 Spring 生態圈被別的框架取代了,那你就失業了。
憂患意識必定要保持着。