SpringBoot集成RabbitMQ生产消费消息(简单实用版)

2023-11-16

概要:要使用RabbitMQ消息队列主要有两个步骤,一个是搭建RabbitMQ服务(需下载安装),二是代码添加依赖开始编码。

一、安装RabbitMQ服务

以docker安装为例,其他安装方式自行百度。

下载镜像:【docker pull rabbitmq】

创建容器并运行:

docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 --privileged rabbitmq:management

防火墙开放端口:

15672(UI页面通信口)、5672(client端通信口)、25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT消息队列遥测传输)

浏览器输入ip:15672访问rabbitmq的管理后台,默认用户名密码为:admin/admin。

ps:若是一直弹出框要求认证,则是用户名密码不对,可以修改下rabbitmq的用户名密码

二、编写代码

1.创建一个普通的springboot项目,添加依赖

<!--rabbitmq-->
<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.8.0</version>
</dependency>

2.创建生产者

package com.szrz.parkdata.producer;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @ClassName Consumer1
 * @Author Qz
 * @Date 2023/6/28 15:53
 * @Description TODO
 * @Version
 **/
public class Producer1 {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1-创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("122.26.2.118");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("admin");
        factory.setPassword("admin");
        factory.setHandshakeTimeout(9999999);

        //2-创建连接
        Connection connection = factory.newConnection();

        //3-创建信道
        Channel channel = connection.createChannel();

        //4-声明一个消息队列
        //名称(需要在mq中注册使用)  是否持久化  当前队列是否只能被一个消费者消费  没有消费者时是否自动删除这个队列  指定这个队列的其他消息
        channel.queueDeclare("parkdata",true,false,false,null);
        String msg = "total:888&residue:600%name:testpark";

        //5-发送消息到指定的队列
        //参数:交换机  路由规则  指定传递的消息携带的properties 要发布的消息
        channel.basicPublish("","parkdata",null,msg.getBytes());
        System.out.println("生产者发送消息成功");
        channel.close();
        connection.close();

    }
}

3.创建消费者

package com.szrz.parkdata.consumer;


import com.rabbitmq.client.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @ClassName Consumer1
 * @Author 777
 * @Date 2023/6/28 15:53
 * @Description TODO
 * @Version
 **/
public class Consumer1 {

    public static void main(String[] args) throws IOException, TimeoutException {
        //1-创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("122.26.2.118");
        factory.setPort(5672);
        factory.setVirtualHost("/");
        factory.setUsername("admin");
        factory.setPassword("adminadmin");
        factory.setHandshakeTimeout(9999999);
        //获取连接对象
        Connection connection = factory.newConnection();

        //3-根据连接获取信道
        Channel channel = connection.createChannel();
        //4-声明消息队列
        channel.queueDeclare("parkdata",true,false,false,null);
        //6-开启监听队列
        DefaultConsumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("消费者收到消息: " + new String(body, "UTF-8"));
            }
        };
        System.out.println("消费者正在等待消息。。。。。");
        //5-消费者消费队列的设置   消费队列的名字    是否反馈ack给rabbitmq   指定调用哪个方法来监听
        channel.basicConsume("parkdata",true,consumer);
        //7-阻塞程序 防止程序结束
        System.in.read();
        //8.环比资源
        channel.close();
        connection.close();

    }
}

运行两个main程序测试就行,rabbitmq的简单实用就到这了,非常的疯狂。

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

SpringBoot集成RabbitMQ生产消费消息(简单实用版) 的相关文章

随机推荐

  • 反接保护电路:

    反接保护电路 通常我们的电子产品 为防止用户将正负极接反 会对接口做防反接保护 比如接口做成梯形或者开个缺口 反了不容易插进 但你真的永远不知道你的产品用户是萌妹纸还是暴力怪蜀黍 最终 这些防接反设计还是被突破了 被暴力插了进去 插进去了
  • uboot联网以及uboot重启问题

    一 配置uboot联网 虚拟机联网 配置uboot联网 1 配置uboot环境变量 setenv ipaddr 192 168 10 50 开发板ip地址 setenv ethaddr 00 04 9f 04 d2 35 mcu期间地址 多
  • ESP8266 CUT HERE FOR EXCEPTION DECODER解决办法

    串口log信息 CUT HERE FOR EXCEPTION DECODER Soft WDT reset gt gt gt stack gt gt gt ctx cont sp 3ffffd40 end 3fffffc0 offset 0
  • java使用多线程同时插入数据库数据例子

    今天自己在家准备面试内容 写了个java使用多线程往mysql数据库插入数据的例子 总结 不管数据库引擎是MYISAM还是InnoDB 情况都是 没有线程池的情况下就不说了 一直创建数据库连接一会就出错了 基本对于上万条的数据插入不可用 使
  • vue2的响应式

    结合源码分析一下vue的响应式 之前对于响应式 只是简单 很表面上的认识 知道vue的响应式主要通过Object defineProperty 方法来进行数据劫持以及发布者 订阅模式来实现的 但是如何进行数据劫持呢 发布订阅者模式又是什么呢
  • 安装pygame

    在学习了一个学期的python之后 我决定对pygame下手了 首先要安装pygame 对于一个计算机小白 安装的过程就比较的痛苦 但是怎么说 查阅了各方资料 好歹是安装完毕 预备条件 win10 python3 9 7 打开cmd win
  • 【vue2】按需引入多个组件的写法

    可以使用component标签 is 组件名 dialogTitle dialogTitle 和 rowInfo offlineRow 就是父给子传值的写法
  • 汽车雷达-综述

    目录 1 简介 2 发展史 3 技术参数 4 采用SIGe毫米波T R组件 5 汽车雷达中主要的信号处理单元 5 1 远程雷达 5 1 1 总体框图 5 1 2 FFT 5 1 3 DOA估计 5 1 3 1 和差测角 5 1 3 2 顺序
  • 多种排序算法(插入、二分法【查找、排序】、选择、冒泡、快速、希尔)

    多种排序算法 插入 二分法 查找 排序 选择 冒泡 快速 希尔 插入排序 function insertSort arr var len arr length for var i 1 i lt len i var key arr i var
  • 用户行为预测论文summay

    用户行为预测论文summary 1 论文名称 Modelingand Predicting Behavioral Dynamics on the Web 2 论文作者 KiraRadinskyz Krysta Svorey 3 主要内容 本
  • 论文阅读--Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

    多人姿态估计的挑战 1 人数 位置和尺寸的大小未知 2 人体之间的相互接触 遮挡造成干扰 3 复杂度随着实时人数的增加而提升 姿态估计方法 1 top down approaches 自顶向下 借助现有的用于单人姿势判断的技术 先检测人 然
  • 趣味算法:探索栈和队列的神秘之旅

    文章目录 前言 一 栈和队列 从历史到理论 二 栈和队列 实际例子和代码 1 栈在后缀表达式求解中的应用 2 队列在打印任务调度中的应用 三 栈和队列 更多的应用场景 四 栈和队列 如何选择 五 栈和队列的变体 六 性能分析 结语 前言 编
  • spring boot 统一JSON格式的接口返回结果

    前后端分离的项目开发前 会提前规定好数据返回格式 本文以JSON为例 第一步 定义好JavaBean package com yclouds myhelper web response import com fasterxml jackso
  • 输入商品数量和单价,计算商品总额。(C语言)

    代码 define CRT SECURE NO WARNINGS 1 include
  • 【PyTorch】使用 Mac GPUs (Apple silicon GPUs) 训练模型

    根据 PyTorch 官网的文章 Introducing Accelerated PyTorch Training on Mac1 从 PyTorch v1 12 release 开始支持使用 Apple silicon GPUs 加速训练
  • ML-熵、条件熵、信息增益

    通俗理解条件熵 特征选择之信息增益法 必看 系统介绍了熵 条件熵 信息增益的概念及推导 条件熵的计算 必看 知乎前三个回答都看一下 有关于熵 条件熵 信息增益的实践 我通过例子一步一步讲解这个概念 在决策树算法的学习过程中 信息增益是特征选
  • stm32实现网页服务器,STM32实现Web服务器

    实例简介 有例程及详细的讲解 适用于初学嵌入式WebServer的同学下载 实例截图 核心代码 ourdev 682501O2PDF8 10M以太网 WEB服务器 源码 PDF教程 以太网ENC28J60 pdf 以太网ENC28J60源码
  • KNN分类——matlab(转载)

    KNN分类 matlab 时间 2016 09 06 标签 matlab knn算法 算法 栏目 MATLAB 原文 http blog csdn net lwwangfang article details 52452429 adsbyg
  • elasticSearch 设置用户名密码 && 查询

    一 设置密码 1 需要在配置文件中开启x pack验证 修改config目录下面的elasticsearch yml文件 在里面添加如下内容 并重启 xpack security enabled true xpack license sel
  • SpringBoot集成RabbitMQ生产消费消息(简单实用版)

    概要 要使用RabbitMQ消息队列主要有两个步骤 一个是搭建RabbitMQ服务 需下载安装 二是代码添加依赖开始编码 一 安装RabbitMQ服务 以docker安装为例 其他安装方式自行百度 下载镜像 docker pull rabb