ActiveMQ是Apache提供的一个开源的消息系统,完全采用Java来实现,因此它能很好地支持JMS(Java Message Service,即Java消息服务)规范;本文将详细介绍下ActiveMq的安装、与SpringBoot整合发送队列消息、发送主题消息的的过程。

本文目录

一、Linux下ActiveMQ安装1.下载并解压2.运行3.进入管理界面二、发送队列消息三、发送主题消息

一、Linux下ActiveMQ安装

1.下载并解压

wget https://mirrors.tuna.tsinghua.edu.cn/apache//activemq/5.15.9/apache-activemq-5.15.9-bin.tar.gz
tar zxvf apache-activemq-5.15.9-bin.tar.gz 

2.运行

cd bin/
./activemq start

3.进入管理界面

浏览器访问192.168.0.1:8161/admin/,默认用户名和密码为:admin/admin,控制台截图如下:

列表中信息含义如下:

  • Number Of Pending Messages:等待消费的消息 这个是当前未出队列的数量。

  • Number Of Consumers:消费者 这个是消费者端的消费者数量

  • Messages Enqueued:进入队列的消息 进入队列的总数量,包括出队列的。

  • Messages Dequeued:出了队列的消息 可以理解为是消费这消费掉的数量。

二、发送队列消息

队列模式特点:

  1. 客户端包括生产者和消费者。
  2. 队列中的一个消息只能被一个消费者使用。
  3. 消费者可以随时取消息。

application.properties配置如下:

#连接地址
spring.activemq.broker-url=tcp://192.168.0.1:61616
#如果是点对点(queue),那么此处默认应该是false,如果发布订阅,那么一定设置为true
spring.jms.pub-sub-domain=false

ActivemqConfig.java配置:

/**
 * 点对点
 */
@Bean
public Queue queue() {
    return new ActiveMQQueue("active.queue");
}

消息生产者SendController.java发送代码如下:

/*
 * 发送 队列消息
 */
@RequestMapping("/sendQueue")
public String sendQueue() {
    String message = UUID.randomUUID().toString();
    // 指定消息发送的目的地及内容
    this.jmsMessagingTemplate.convertAndSend(this.queue, message);
    return "消息发送成功!message=" + message;
}

消息消费者QueueCustomerController.java发送代码如下:

@RestController
public class QueueCustomerController {
/*
 * 监听和接收  队列消息
 */
@JmsListener(destination="active.queue")
public void readActiveQueue(String message) {
    System.out.println("接受到:" + message);
}
}

浏览器连续访问:http://localhost:8080/sendQueue,消息发送成功,消费者接收消息后打印的日志如下:

接受到:51d85d31-002d-4c9b-87df-a5ea64e8d6da
接受到:1c9dab0c-1d47-4556-95dc-601c8add44fe
接受到:d199ff29-d6ff-41d2-ada0-921d636f7ed1
接受到:4d50ba07-a48a-42b6-a67e-805cdeea662c
接受到:31fc16a9-8aec-4ee6-bbb3-a0ca22c19686

三、发送主题消息

主题模式特点:

  1. 客户端包括发布者和订阅者。
  2. 主题中的消息可以被所有订阅者消费。
  3. 消费者不能消费订阅之前发送的消息。

application.properties中修改属性:

spring.jms.pub-sub-domain=true

ActivemqConfig.java配置:

/**
 * 发布/订阅
 */
@Bean
public Topic topic() {
    return new ActiveMQTopic("active.topic");
}

消息生产者SendController.java发送代码如下:

/*
 * 发送 主题消息
 */
@RequestMapping("/sendTopic")
public String sendTopic() {
    String message = UUID.randomUUID().toString();
    // 指定消息发送的目的地及内容
    this.jmsMessagingTemplate.convertAndSend(this.topic, message);
    return "消息发送成功!message=" + message;
}

添加两个消息消费者,TopicCustomerController.java代码如下:

/*
 * 监听和接收  主题消息1
 */
@JmsListener(destination = "active.topic")
public void readActiveTopic1(String message) {
    System.out.println("Customer1接受到:" + message);
} /*
 * 监听和接收  主题消息2
 */
@JmsListener(destination = "active.topic")
public void readActiveTopic2(String message) {
    System.out.println("Customer2接受到:" + message);
}

浏览器连续访问:http://localhost:8080/sendTopic,消息发送成功,两个消费者接收消息后打印的日志如下:

Customer1接受到:96c674b7-a310-487b-8088-2c5d049cfabf
Customer2接受到:96c674b7-a310-487b-8088-2c5d049cfabf
Customer1接受到:fee4fde8-6cbe-4d08-b179-e9462f6f1e74
Customer2接受到:fee4fde8-6cbe-4d08-b179-e9462f6f1e74
Customer1接受到:05d79335-ff33-41ec-ba13-a6f5c9d5bba0
Customer2接受到:05d79335-ff33-41ec-ba13-a6f5c9d5bba0
Customer1接受到:f8244df3-5504-478b-b86e-77823ab34dac
Customer2接受到:f8244df3-5504-478b-b86e-77823ab34dac

推荐阅读
1.编码神器Lombok,学会后开发效率至少提高一倍!
2.Spring Boot配置过滤器的两种方式
3.Spring Boot统一异常处理实战
4.从技术的角度分析下为什么不要在网上发“原图”
5.Spring Boot之Profile--快速搞定多环境使用与切换


限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:

Java碎碎念公众号

SpringBoot整合ActiveMQ,看这篇就够了的更多相关文章

  1. ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...

  2. Web项目容器集成ActiveMQ & SpringBoot整合ActiveMQ

    集成tomcat就是随项目启动而启动tomcat,最简单的方法就是监听器监听容器创建之后以Broker的方式启动ActiveMQ. 1.web项目中Broker启动的方式进行集成 在这里采用Liste ...

  3. .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9985451.html 本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新 ...

  4. 想了解SAW,BAW,FBAR滤波器的原理?看这篇就够了!

    想了解SAW,BAW,FBAR滤波器的原理?看这篇就够了!   很多通信系统发展到某种程度都会有小型化的趋势.一方面小型化可以让系统更加轻便和有效,另一方面,日益发展的IC**技术可以用更低的成本生产 ...

  5. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 本文首发自:博客园 文章地址: https://www.cnblogs.com/yilezhu/p/ ...

  6. ExpandoObject与DynamicObject的使用 RabbitMQ与.net core(一)安装 RabbitMQ与.net core(二)Producer与Exchange ASP.NET Core 2.1 : 十五.图解路由(2.1 or earler) .NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

    ExpandoObject与DynamicObject的使用   using ImpromptuInterface; using System; using System.Dynamic; names ...

  7. SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...

  8. Vue学习看这篇就够

    Vue -渐进式JavaScript框架 介绍 vue 中文网 vue github Vue.js 是一套构建用户界面(UI)的渐进式JavaScript框架 库和框架的区别 我们所说的前端框架与库的 ...

  9. SpringBoot整合ActiveMQ快速入门

    Spring Boot 具有如下特性: 为基于 Spring 的开发提供更快的入门体验 开箱即用,没有代码生成,也无需 XML 配置.同时也可以修改默认值来满足特定的需求. 提供了一些大型项目中常见的 ...

  10. 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了

    原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...

随机推荐

  1. 挂起(suspend)与线程阻塞工具类LockSupport

    挂起(suspend)与线程阻塞工具类LockSupport 一般来说是不推荐使用suspend去挂起线程的,因为suspend在导致线程暂停的同时,并不会去释放任何锁资源. 如果其他任何线程想要访问 ...

  2. 第十章 Fisco Bcos 权限控制下的数据上链实操演练

    一.目的 前面已经完成fisco bcos 相关底层搭建.sdk使用.控制台.webase中间件平台等系列实战开发, 本次进行最后一个部分,体系化管理区块链底层,建立有序的底层控管制度,实现权限化管理 ...

  3. [TCP/IP]DNS解析

    DNS解析主机的IP地址 host -t A www.baidu.com

  4. SVG和canvas渲染的性能比较

    1.什么是SVG? 描述: 一种使用XML描述的2D图形的语言 SVG基于XML意味着,SVG DOM中的每个元素都是可用的,可以为某个元素附加Javascript事件处理器. 在 SVG 中,每个被 ...

  5. A solution to the never shortened to-do list

    I once told my younger sister my learning system, and the basic five doctrines of my methodology. Bu ...

  6. volatile关键字的详解-并发编程的体现

    xl_echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 参 ...

  7. C++ “::” 作用域符 双冒号

    C++ "::" 作用域符 双冒号 作用域符 :: 是作用域符,是运算符中等级最高的,它分为三种: 1)global scope(全局作用域符),用法(::name) 2)clas ...

  8. neural_transfer风格迁移

    ContentLoss 首先是要定义一个内容差异损失函数,这里直接调用functional.mse_loss(input,self.target)就可以计算出其内容差异损失. 注意这里一般是定义一个网 ...

  9. zookeeper的leader选举机制个人总结

    第一步:每个服务器都首先投自己,格式为<sid,zxid>: 第二步:然后将自己的投票以<sid,zxid>形式发送给其他服务器,这样每个服务器除了自己的投票,还有集群中除了自 ...

  10. centos7不能连接外网

    1.  首先保证虚拟机是NAT模式 2.  打开cmd窗口,输入ipconfig,查看vmnet8的ipv4地址是多少,DNS也需要记下,后面会用到 注意:vmnet8的ip要与虚拟机的网关IP在同一 ...