一、前言

最近小编在学习消息队列,然后选中了ActiveMq,来进行学习.于是探索了好久,来整理一下自己的学习心得!大家一起学习,希望对你有用.我把一些我自己的理解写在注释里了注意看!!

二、ActiveMq的下载和使用

  • 下载

大家直接下载解压就可以使用了--->

链接:https://pan.baidu.com/s/1W0MZtQAya0mOEKMWqJK1iA

提取码:29mz

  • 使用

三、依赖准备

	<!-- activemq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

四、yml文件配置

spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
jms:
pub-sub-domain: true # 默认为false:queue true:topic
queue: queue_mq # 点对点消费名字
topic: topic_mq # 订阅式消费名字

五、配置Bean

import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms; import javax.jms.Queue;
import javax.jms.Topic; @Configuration
@EnableJms
public class ActiveMqConfig { @Value("${queue}")//对应yml文件中定义的queue
private String queue; @Value("${topic}")//对应yml文件中定义的topic
private String topic;
/**
* 创建点对点的队列 一个消息只能被一个消费者消费 --- 一对一
* @return
*/
@Bean
public Queue queue(){
return new ActiveMQQueue(queue);
}
/**
* 创建订阅式的队列 一个消息可以被多个消费者消费 --- 一对多
* @return
*/
@Bean
public Topic topic(){
return new ActiveMQTopic(topic);
}
}

六、创建生产者(Queue+Topic)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import javax.jms.Queue;
import javax.jms.Topic; @RestController
public class ProducerController { @Autowired
private Queue queue; @Autowired
private Topic topic; @Autowired
private JmsMessagingTemplate jmsMessagingTemplate; /**
* 点对点的消息队列的生产者
* @param string
*/
@GetMapping("/queue")
public void sendMsgQueue(@RequestParam String string){
System.out.println("消息已经发送,准备被消费,消息为 ---> "+string);
jmsMessagingTemplate.convertAndSend(queue,string);
} /**
* 一对多的消息队列的生产者
* @param string
*/
@GetMapping("/topic")
public void sendMsgTopic(@RequestParam String string){
System.out.println("消息已经发送,准备被消费,消息为 ---> "+string);
jmsMessagingTemplate.convertAndSend(topic,string);
} }

七、创建消费者(Topic模式下)

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; @Component
public class TopicConsumer { /**
* 监听消息,名字为生产者发送的名字,要一致,不然监听不到.
* 因为是订阅者模式,可以有多个消费者,我们这里举两个来进行测试
* @param string
*/
@JmsListener(destination = "${topic}")
public void consumerTopicOne(String string){ System.out.println("我是消费者一号:消费消息成功,信息为---> "+string); } @JmsListener(destination = "${topic}")
public void consumerTopicTwo(String string){ System.out.println("我是消费者二号:消费消息成功,信息为---> "+string); }
}

八、测试结果(Topic模式下)

九、ActiveMq网页版查看是否成功(Topic模式下)

网站地址 http://127.0.0.1:8161/admin/ 账号密码都是admin



十、创建消费者(Queue模式下)

首先把yml文件中的配置修改为Queue:pub-sub-domain: false

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; @Component
public class QueueConsumer { /**
* 监听消息,名字为生产者发送的名字,要一致,不然监听不到.
* 因为是队列模式,只能消费者
* @param string
*/
@JmsListener(destination = "${queue}")
public void consumerQueue(String string){ System.out.println("消费消息成功,信息为---> "+string);
} }

十一、测试结果(Queue模式下)

十二、ActiveMq网页版查看是否成功(Queue模式下)

十三、总结

这样我们就搭建好了,并且测试没有问题,有问题留言哦.比较合适刚刚学习的童鞋们,期待您的关注,一起学习,一起提高哦!!!

SpringBoot整合ActiveMq实现Queue和Topic两种模式(看不懂你来打我)的更多相关文章

  1. ActiveMQ的queue以及topic两种消息处理机制分析

    1    queue与topic的技术特点对比 对比项 Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状 ...

  2. 解决Springboot整合ActiveMQ发送和接收topic消息的问题

    环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...

  3. 实例讲解Springboot整合MongoDB进行CRUD操作的两种方式

    1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...

  4. 消息队列:快速上手ActiveMQ消息队列的JMS方式使用(两种模式:Topic和Queue的消息推送和订阅)

    1.实现功能 希望使用一套API,实现两种模式下的消息发送和接收功能,方便业务程序调用 1.发送Topic 2.发送Queue 3.接收Topic 4.接收Queue 2.接口设计 根据功能设计公共调 ...

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

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

  6. SpringBoot整合ActiveMQ和开启持久化

    一.点对点 1.提供者目录展示 2.导入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...

  7. ActiveMQ 笔记(四)Spring\SpringBoot 整合 Activemq

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.Spring 整合Activemq 1.所需jar包 <dependencies> &l ...

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

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

  9. SpringBoot整合ActiveMQ快速入门

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

随机推荐

  1. idea本地调式tomcat源码

    前言 上篇文章中一直没搞定的tomcat源码调试终于搞明白了,p神的代码审计星球里竟然有,真的好b( ̄▽ ̄)d ,写一下过程,还有p神没提到的小坑 准备阶段 1.去官网下东西:https://tomc ...

  2. CentOS 8 已经不再支持,Rocky Linux 才是未来

    2020年12月8日,红帽公司宣布,他们将停止开发CentOS,而在此之前CentOS一直作为红帽企业Linux的生产型分支及下游版本,此后他们将转而开发该操作系统的一个更新的上游开发变种,即 &qu ...

  3. C语言:指针

    #include <stdio.h> #include <stdlib.h> int sum(int a,int b) { int c; c=a+b; printf(" ...

  4. SOA-面向服务的架构

    一.什么是SOA? SOA 面向服务架构,是一个架构思想,是跨语言和平台的.SOA宗旨简单明了,根据项目服务完成架构搭建,以服务为基准点完成组件化和模块化.提供服务是项目的基本内容,其他的contro ...

  5. 泛型(8)-Java7的"菱形"语法与泛型构造器

    正如泛型方法允许在方法签名中声明泛型形参一样,Java也允许在构造器签名中声明泛型形参,这样就产生了所谓的泛型构造器. package com.j1803;class Foo{ public < ...

  6. 【LeetCode】933.最近的请求次数

    933.最近的请求次数 知识点:队列: 题目描述 写一个 RecentCounter 类来计算特定时间范围内最近的请求. 请你实现 RecentCounter 类: RecentCounter() 初 ...

  7. python基础之列表推导式

    #列表推导式 ---> 返回的是列表 for语句 效率更高# 1*1 2*2 3*3 4*4 5*5 6*6 7*7 8*8 9*9# import time# to = time.clock( ...

  8. 微信小程序云开发-数据库-商品列表数据显示N条数据

    一.wxml文件 在wxml文件中,写页面和点击事件,添加绑定事件limitGoods  二.js文件 在js文件中写limitGoods(),使用.limit(3)表示只显示3条数据

  9. vue(23)Vuex的5个核心概念

    Vuex的核心概念 Vuex有5个核心概念,分别是State,Getters,mutations,Actions,Modules. State   Vuex使用单一状态树,也就是说,用一个对象包含了所 ...

  10. 上手Coc.nvim 完全指南

    上手Coc.nvim 完全指南 介绍 Coc.nvim 是一个基于NodeJS 的适用于Vim8, Neovim 的Vim 智能补全插件. 拥有完整的LSP 支持.配置.使用方式及插件系统的整体风格类 ...