Spring Boot 集成RabbitMQ

2023-05-16

RabbitMQ is an open source multi-protocol messaging broker.

前言

参照官方Messaging with RabbitMQ,记录在实战中的一些坑。

搭建RabbitMQ服务

本文使用Docker搭建MQ服务。Docker部署服务,快捷、方便。

安装镜像

参照docker 安装ubuntu安装镜像

这里写图片描述

这里写图片描述

启动镜像

docker run -d -p 15672:15672 -p 5672:5672 rabbitmq:3-management

这里写图片描述

这里要映射2个端口:15672是Web管理界面的端口;5672是MQ访问的端口。

Web管理界面

http://192.168.99.100:15672/

guest/guest

这里写图片描述

这里写图片描述

RabbitMQ服务部署好了。。。

集成

环境

IntelliJ IDEA 2016.3.4

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>
        <java.version>1.8</java.version>

maven依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
    </dependencies>

代码实现

配置

这里写图片描述

AmqpInitConfig

@Configuration
@ConditionalOnProperty(prefix = "spring.rabbitmq",name = "enable", matchIfMissing = false)
public class AmqpInitConfig {

    final static String queueName="spring.boot";

    @Bean
    public Queue queue(){
        return new Queue(queueName,false);
    }

    @Bean
    public TopicExchange exchange(){
        return new TopicExchange("spring.boot.exchange");
    }

    @Bean
    public Binding binding(TopicExchange exchange,Queue queue){
        return BindingBuilder.bind(queue).to(exchange).with(queueName+".key");
    }

    @Bean
    public SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter){
        SimpleMessageListenerContainer container=new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setMessageListener(listenerAdapter);
        container.addQueueNames(queueName);
        return container;
    }

    @Bean
    public MessageListenerAdapter listenerAdapter(Receiver receiver){
        return new MessageListenerAdapter(receiver,"receiveMessage");
    }
}

接受消息

Receiver

@Component
public class Receiver {
    CountDownLatch latch = new CountDownLatch(1);

    public void receiveMessage(String message) {
        System.out.println("Received <" + message + ">");
        latch.countDown();
    }

    public CountDownLatch getLatch() {
        return latch;
    }
}

发送消息

Runner

@Component
public class Runner implements CommandLineRunner {
    private final RabbitTemplate rabbitTemplate;
    private final Receiver receiver;
    private final ConfigurableApplicationContext context;

    public Runner(Receiver receiver, RabbitTemplate rabbitTemplate,
                  ConfigurableApplicationContext context) {
        this.receiver = receiver;
        this.rabbitTemplate = rabbitTemplate;
        this.context = context;
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Sending message...");
        rabbitTemplate.convertAndSend("spring.boot.exchange","spring.boot.key", "Hello from RabbitMQ!");
        receiver.getLatch().await(  10000, TimeUnit.MILLISECONDS);
        context.close();
    }

}

启动

AmqpApplication

@SpringBootApplication
@ComponentScan(basePackages = "com.wxs.amqp")
public class AmqpApplication {
    public static void main(String[] args) {
        SpringApplication.run(AmqpApplication.class,args);
    }
}

这里写图片描述

踩过的坑

坑一

发送消息需要制定exchange,如果不指定,不会发送消息。

这里写图片描述

坑二

跨局域网访问MQ。需要把虚拟机的网络改为桥接网络。

这里写图片描述

打卡虚拟机终端,ifconfig eth0查看IP

这里写图片描述

192.168.99.100172.16.36.81

参考

Messaging with RabbitMQ
How to use this image Running the daemon

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 集成RabbitMQ 的相关文章

随机推荐

  • 数据结构对齐规则(C语言)

    概念 xff1a 一些概念是为了容易理解 xff0c 自己定义的 1 基本对齐系数 xff1a 默认情况 xff1a 由编译器和操作系统决定 xff0c 一般来说32位系统对齐系数为4 xff08 字节 xff09 xff1b 64位系统对
  • ubuntu grace/xmgrace安装和使用

    grace是什么 xff1f Grace是 GRaphing Advanced Computation and Exploration of data 的缩写 它是在X Window系统和Motif下的所见即所得 xff08 所见及所得 x
  • OFDM多径传输时域和频域模型,以及循环前缀的作用

    1 多径信道传输模型 从信号传输的基本模型入手 考虑如下式所示的线性时不变系统 xff0c y t 61 h
  • 对单片机堆栈的理解

    看关于单片机方面的书籍的时候 xff0c 总是能看到别人说的一些堆栈啊什么的操作 xff0c 之前看到这个术语就直接跳过 xff0c 没想到去探究单片机内部的原理 但是最近课程学习微机原理这门课 xff0c 需要我们写汇编程序 xff0c
  • ROS 中package.xml文件详解01

    package xml文件时每一个ros包都要有的一个文件 xff0c 也是必须要包含的一个文件 1 最简单的xml文件 span class token operator lt span package format span class
  • 常用车载总线CAN、CAN FD、LIN、FlexRay、Ethernet介绍

    文章目录 前言 关于这些总线的详细介绍可分别参考如下 xff1a 一 为什么要这些总线二 车载总线的种类1 CAN1 1 CAN协议简介1 2 CAN协议特点 2 CAN FD2 1 CAN FD协议简介2 2 CAN FD协议特点 3 L
  • Leetcode刷题【8. 字符串转换整数】

    力扣第8题 xff0c 字符串转换整数 atoi 题目描述 xff1a 请你来实现一个 myAtoi string s 函数 xff0c 使其能将字符串转换成一个 32 位有符号整数 xff08 类似 C C 43 43 中的 atoi 函
  • Leetcode刷题【10. 正则表达式匹配】

    力扣第10题 xff0c 正则表达式匹配 题目描述 xff1a 给你一个字符串 s 和一个字符规律 p xff0c 请你来实现一个支持 和 的正则表达式匹配 匹配任意单个字符 匹配零个或多个前面的那一个元素 所谓匹配 xff0c 是要涵盖
  • Jetseon TX2 & IntelRealsense D435i & Python

    Jetseon TX2 amp IntelRealsense D435i amp Python amp Socket 一 IntelRealsense Python Wrapper GitHub 1 Installation pip ins
  • Unix 环境高级编程(一):开发环境

    Unix 环境高级编程 xff08 一 xff09 xff1a 开发环境 一 Unix操作系统二 Linux操作系统三 GNU编译工具 xff08 GCC xff09 1 简介2 基本用法3 文件后缀4 构建过程5 预处理指令6 预定义宏7
  • pyqt判断鼠标点击事件——左键按下、中键按下、右键按下、左右键同时按下等等

    我用自定义的myLabel类继承pyqt中的QLabel类 xff0c 然后在myLabel类中重载了鼠标按下事件函数 xff0c 在这一函数中实现了判断左右中键按下的代码 from PyQt5 import QtCore QtGui Qt
  • 无人驾驶学习笔记--路径规划(一)【Path Finding -- Hybrid A* 】

    无人驾驶学习笔记 路径规划 xff08 一 xff09 Path Finding Hybrid A 混合A算法 xff08 Hybrid A xff09 It uses continuous search space 连续空间It alwa
  • rosbag remp 以及/velodyne_packets和/velodyne_points的相互转换

    在采集velodyne雷达数据的时候 xff0c 本来想要采集的是 velodyne points topic xff0c 却不小心复制成了 velodyne packets topic 采完数据才发现不对 xff0c 一脸懵逼 赶紧查一下
  • 串口调试助手vc源程序及其详细编写过程

    目次 xff1a 1 建立项目 2 在项目中插入MSComm控件 3 利用ClassWizard定义CMSComm类控制变量 4 在对话框中添加控件 5 添加串口事件消息处理函数OnComm 6 打开和设置串口参数 7 发送数据 8 发送十
  • 18张含金量最高的大数据证书

    这年头从事数据行业很不赖 用人需求量之大达到创记录的水平 xff0c 薪资也水涨船高 几乎任何数据认证都会让你的薪资涨一涨 本文介绍了哪几大数据认证可以让你稳赚丰厚薪水 顶级数据技能拿顶薪 你是不是在想 xff1a 为获得那下一份数据认证付
  • XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式 它的平台无关性 语言无关性 系统无关性 给数据集成与交互带来了极大的方便 XML在不同的语言环境中解析方式都是一样的 只不过实现的语法不同而已 XML的解析方式分为四种 xff1a 1 DOM解析 xff1b
  • JVM调优总结 -Xms -Xmx -Xmn -Xss

    Xms 是指设定程序启动时占用内存大小 一般来讲 xff0c 大点 xff0c 程序会启动的快一点 xff0c 但是也可能会导致机器暂时间变慢 Xmx 是指设定程序运行期间最大可占用的内存大小 如果程序运行需要占用更多的内存 xff0c 超
  • Spring Boot 传参方式

    最近在搞Spring Boot的项目 xff0c 把传参方式总结一下 网上也参考一些文章 xff0c 总结的很不错 xff0c 这里借鉴一下 注解 64 RequestParam 这个注解用来绑定单个请求数据 xff0c 既可以是url中的
  • Java BigDecimal开方

    前言 一般开平方使用的是Math中的静态方法Math sqrt double a xff0c 涉及到金融计算的时候 xff0c Math sqrt double a 精度就不够了 金融领域的计算 xff0c 用的都是BigDecimal类型
  • Spring Boot 集成RabbitMQ

    RabbitMQ is an open source multi protocol messaging broker 前言 参照官方Messaging with RabbitMQ xff0c 记录在实战中的一些坑 搭建RabbitMQ服务