SpringBoot整合ActiveMq实现Queue和Topic两种模式

简介: SpringBoot整合ActiveMq实现Queue和Topic两种模式

SpringBoot整合ActiveMq实现Queue和Topic两种模式


文章目录

一、前言

二、ActiveMq的下载和使用

三、依赖准备

四、yml文件配置

五、配置Bean

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

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

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

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

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

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

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

十三、总结


一、前言

最近小编在学习消息队列,然后选中了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模式下)

十三、总结

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

相关文章
|
5月前
|
Web App开发 编解码 Java
B/S基层卫生健康云HIS医院管理系统源码 SaaS模式 、Springboot框架
基层卫生健康云HIS系统采用云端SaaS服务的方式提供,使用用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医疗机构的主要工作流程,能够与监管系统有序对接,并能满足未来系统扩展的需要。
179 4
|
5月前
|
Java Maven
SpringBoot集成RabbitMQ-三种模式的实现
SpringBoot集成RabbitMQ-三种模式的实现
358 0
|
4月前
|
消息中间件 Java Kafka
SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
SpringBoot实用开发篇第六章(整合第三方技术,ActiveMQ,RabbitMQ,RocketMQ,Kafka)
|
4月前
|
消息中间件 监控 Java
使用Spring Boot结合ActiveMQ和MQTT实现消息的发送和接收
使用Spring Boot结合ActiveMQ和MQTT实现消息的发送和接收
341 3
|
4月前
|
Java Docker 容器
使用 Spring Boot 构建 Docker 镜像并进行多模式部署
使用 Spring Boot 构建 Docker 镜像并进行多模式部署
176 2
|
5月前
|
传感器 人工智能 前端开发
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
智慧校园电子班牌,坐落于班级的门口,适合于各类型学校的场景应用,班级学校日常内容更新可由班级自行管理,也可由学校统一管理。让我们一起看看,电子班牌有哪些功能呢?
536 4
JAVA语言VUE2+Spring boot+MySQL开发的智慧校园系统源码(电子班牌可人脸识别)Saas 模式
|
3月前
|
消息中间件 Java Apache
使用Spring Boot实现与ActiveMQ的消息队列集成
使用Spring Boot实现与ActiveMQ的消息队列集成
|
5月前
|
JavaScript Java 测试技术
微信小程序基于BS模式的学生实习与就业管理springboot+vue.js附带文章和源代码设计说明文档ppt
微信小程序基于BS模式的学生实习与就业管理springboot+vue.js附带文章和源代码设计说明文档ppt
50 1
|
5月前
|
消息中间件 Java
SpringBoot实现RabbitMQ的通配符交换机(SpringAMQP 实现Topic交换机)
SpringBoot实现RabbitMQ的通配符交换机(SpringAMQP 实现Topic交换机)
52 1
|
5月前
|
NoSQL Java Redis
springboot之RedisTemplate的访问单机,哨兵,集群模式
以上是配置RedisTemplate以连接到单机、哨兵和集群模式的示例。在实际应用中,还可以根据需求配置连接池、序列化方式、超时等其他参数。
247 0
下一篇
无影云桌面