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 ");
}
}
}
对以上代码作一个简单的说明:
- 为了简化模型来说明 SpringBoot 中 Activemq 的使用,以上的消息生产者和消息消费者都只做了最简单的模拟,没有任何逻辑;
- 以上的测试使用接口进行测试(作者比较喜欢这种方式),不局限这种方式,读者可以用单元测试。
启动项目,先看看 ActiveMQ 界面:

可以看到生产出来的消息,已经被注入到 ActiveMQ 中去了。
然后再访问以上测试接口:http://localhost:8080/test,再看 ActiveMQ 界面:

生产者生产的消息,被消费者消费。
控制台的信息是:

以上演示了 ActiveMQ 在 SpringBoot 项目中的使用。其余的一些详细的测试,读者可以按照前一章 ActiveMQ 的说明,自行测试。此处由于篇幅所限,就不做冗余阐述。
总结
看完以上的示例,读者应该能继续感受到 SpringBoot 框架的"开箱即用"的特性和极简模式。关注几个注解或者几个组件,就能用的很顺畅。
但是,还是重复那句,框架的封装度越高,用起来越简单,但是对底层的原理的理解越难。如果碰到了问题,也更难追踪。所以作者建议读者,特别是新人或者刚接触 SpringBoot 的读者,一定要在使用的基础上,去理解每一个被整合的框架的使用和原理(当然,如果基础好,能够读底层源码更好了)。万不可为了使用而使用。就像一个同事说的,如果哪一天 Spring 生态圈被别的框架取代了,那你就失业了。
忧患意识一定要保持着。

SpringBoot第二十一篇:整合ActiveMQ的更多相关文章
- Python开发【第二十一篇】:Web框架之Django【基础】
Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...
- SpringBoot第二十三篇:安全性之Spring Security
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11350255.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 系统的安全 ...
- SpringBoot第二十篇:初识ActiveMQ
本文是作者之前写的关于 ActiveMQ 的一篇文章.此处为了保证该系列文章的完整性,故此处重新引入. 一.消息中间件的介绍 介绍 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数 ...
- SpringBoot非官方教程 | 第二十一篇: springboot集成JMS
转载请标明出处: http://blog.csdn.net/forezp/article/details/71024024 本文出自方志朋的博客 springboot对JMS提供了很好的支持,对其做了 ...
- Python之路【第二十一篇】:JS基础
JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...
- Python之路【第二十一篇】Django ORM详解
ORM回顾 关系对象映射(Object Relational Mapping,简称ORM). django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框 ...
- SpringBoot第十一篇:SpringBoot+MyBatis+Thymelaf实现CRUD
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10936304.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 总结前面几 ...
- Python之路(第二十一篇) re模块
一.re模块 正则表达式本身是一种小型的.高度专业化的编程语言,正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re,正则表达式模式被编译成一系列的字节码,然 ...
- 【Python之路】第二十一篇--Memcached、Redis
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
随机推荐
- 小米手机销量暴跌36% 雷军做错了什么?(人的需求是复杂的,而不是仅仅是一个性价比;要做体验价格比,而不是配置价格比)good
小米手机销量暴跌36% 雷军做错了什么? 日前,小米科技创始人雷军在美国马萨诸塞州剑桥市出席了第20届哈佛中国论坛开幕式并发表了演讲.在演讲中,雷军说但小米却只用两年半的时间一跃成为了中国第一,世界第 ...
- C#二分查找法 破洞百出版本
二分查找法在数据繁多的数据中查找是一种快速的方法,每次查找最多需要的次数 为2的n次方小于总个数. 当然是有前提的,就是需要把数据先排好序,这里指的都是数值型的数据. 基本思想就是把需要找的值与排序好 ...
- 分享基于.NET动态编译&Newtonsoft.Json封装实现JSON转换器(JsonConverter)原理及JSON操作技巧
看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而 ...
- Qt5.5.0在Windows下静态编译(修改参数以后才能支持XP)good
测试系统环境: windows 7 编译软件环境: vs2013 + QT5.5.0 [源码地址:http://download.qt.io/official_releases/qt/5.5/5.5. ...
- Editor.md v1.4.2 发布,改进自定义工具栏
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...
- Win7和Vista的安全机制对于应用程序读取配置文件相关操作的影响(虚拟重定向技术)
今天构造了一个新版本的XXXX软件,并且在纯净的系统下进行了较为全面的测试.测试中也发现了一些问题.其中包括在Win7测试时程序竟然在另一个目录中创建了文件夹和配置文件,并且进行相关读取操作,却并没有 ...
- WCF研究-前篇
前篇 1.从SOA说起 2.什么是WCF 3.WCF通信模型 4.Endpoint与ABC以及元数据 1.SOA (Service Oriented Architecture) Ø 一种组件架 ...
- MJPhotoBrowser 用法
一.使用方法: #import "MJPhotoBrowser.h" #import "MJPhoto.h" - (void)tapPhoto:(UIT ...
- C# 中使用不安全代码(unsafe、指针)实践
命题 根据指定的字符集合(字典),按排列组合的规则(允许重复),生成指定长度的所有字符串.如下代码: class Program { static void Main(string[] args) { ...
- 因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间
导致你的问题的,应该有2种可能性: 1.存放你的primary文件组的磁盘,已经满了: use master--你的数据库名称 go --看看你的primary组里的文件 select ds.name ...