作者:追梦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)

SpringBoot第二十一篇:整合ActiveMQ的更多相关文章

  1. Python开发【第二十一篇】:Web框架之Django【基础】

    Python开发[第二十一篇]:Web框架之Django[基础]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...

  2. SpringBoot第二十三篇:安全性之Spring Security

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11350255.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   系统的安全 ...

  3. SpringBoot第二十篇:初识ActiveMQ

    本文是作者之前写的关于 ActiveMQ 的一篇文章.此处为了保证该系列文章的完整性,故此处重新引入. 一.消息中间件的介绍 介绍 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数 ...

  4. SpringBoot非官方教程 | 第二十一篇: springboot集成JMS

    转载请标明出处: http://blog.csdn.net/forezp/article/details/71024024 本文出自方志朋的博客 springboot对JMS提供了很好的支持,对其做了 ...

  5. Python之路【第二十一篇】:JS基础

    JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...

  6. Python之路【第二十一篇】Django ORM详解

    ORM回顾 关系对象映射(Object Relational Mapping,简称ORM). django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 对于ORM框 ...

  7. SpringBoot第十一篇:SpringBoot+MyBatis+Thymelaf实现CRUD

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10936304.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   总结前面几 ...

  8. Python之路(第二十一篇) re模块

    一.re模块 正则表达式本身是一种小型的.高度专业化的编程语言,正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re,正则表达式模式被编译成一系列的字节码,然 ...

  9. 【Python之路】第二十一篇--Memcached、Redis

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

随机推荐

  1. WPF应用程序的启动画面[Splash Screen本质分析]

    原文:WPF应用程序的启动画面[Splash Screen本质分析] 不经意间发现了wpf的这个小玩意,感觉蛮有意思的.我在项目中添加了一张图片 如图: wpf-1.JPG(10.73 K) 2010 ...

  2. Plupload上传实例《模仿微云上传实例》,带源码

    Plupload上传实例<模仿微云上传实例>,带源码,作者:鱼塘总裁 如有疑问,加群交流:646104701 一.实例截图 1.上传过程 2.上传成功 3.上传失败 4.最小化 二.所需文 ...

  3. 在2005年,Unicode 的第十万个字符被采纳且认可成为标准之一(超过这65535范围的Unicode字符,则需要使用一些诡异的技巧来实现)

    在计算机科学领域中,Unicode(统一码.万国码.单一码.标准万国码)是业界的一种标准,它可以使电脑得以体现世界上数十种文字的系统.Unicode 是基于通用字符集(Universal Charac ...

  4. Android 调试桥(adb)是多种用途的工具

    Android 调试桥 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. 可以通过下列几种方法加入adb: 在设备上运行shell命令 通过端口转发来管理 ...

  5. HTTP协议解析(格式和举例十分清楚)

    掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在学习JSP开发中的某些知识就可以易如反掌了. 一,HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的.无状态 ...

  6. linux服务脚本编写

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  7. Excel的Range对象(C#)

    原文:Excel的Range对象(C#) Range 对象是 Excel 应用程序中最经常使用的对象:在操作 Excel 内的任何区域之前,都需要将其表示为一个 Range 对象,然后使用该 Rang ...

  8. Windows 10 (IIS 10)安装Microsoft Web Farm Framework Version 2.2 for IIS7问题

    But I got an error message "iis version 7.0 or greater is required to install Web Farm Framewor ...

  9. 获取其他进程中“Internet Explorer_TridentCmboBx”的内容

    function GetTridentCmboBxText( // 获取其他进程中“Internet Explorer_TridentCmboBx”的内容   mHandle: THandle; // ...

  10. 关于Android开发四大组件

    文章主要是讲Android开发的四大组件,本文主要分为 文章源自:http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 一.Act ...