RabbitMQ入门

RabbitMQ从入门到精通(详细) 根据最近对rabbitmq的深入学习,记录了相应的学习笔记,希望能帮助到大家。 阅读详情

简介:

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

核心概念

Message:
消息,消息是不具名的,它是由消息头和消息体组成。消息体是不透明的,而消息体则由一系列的可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)等。

Publisher:
消息的生产者,也是一个向交换器发布消息的客户端应用程序

Exchange:
交换器,用来接收生产者发送的消息并将这些消息给服务器中的队列。
Exchange有4种类型:direct(默认)、fanout、topic、headers,不同类型的Exchange转发消息的策略有所区别。

Rabbit安装

因为Rabbit是基于Erlang语言编写,所以安装Rabbit前需要先安装Erlang。

这个Erlang安装otp_win64_20.3.exe这个版本就可以了,百度一下这个版本就可以搜到下载的资源,安装教程也有,包括环境变量什么的,这里就不在演示。

然后就需要安装rabbitmq-server-3.7.7.exe百度一下资源,然后安装,安装之后的额目录是这个样子的

在这里插入图片描述
打开sbin文件夹,在这个文件夹的里面打开cmd黑窗口,输入rabbitmq-plugins.bat enable rabbitmq_management
启动服务。或者手动开启服务(如下图)
在这里插入图片描述
打开之后可以使用http://localhost:15672访问,会出现如下图,让你登录的页面,默认密码和账号都是guest。
在这里插入图片描述
这个时候通过localhost是可以登录的,但如果把localhost换成你电脑的本地IP地址就会提示你无法登录。
这个时候你可以选择:1、现用localhost形式登进去,创建一个新的用户名,用新的用户名和密码登录即可。2、找到安装目录ebin下的rabbit.app文件
在这里插入图片描述
把第39[]里面的内容清空。如下图即可使用本地IP地址登录。
在这里插入图片描述

登录进去之后就如下图

在这里插入图片描述
可以先在这web视图上创建队列和消息(省略)。

使用前提

首先需要导入pom依赖

        <!--   引入RabbitMQ模块     -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

在启动类上标注 == @EnableRabbit == 注解,表示开启基于注解的RabbitMQ

@SpringBootApplication
@EnableRabbit //开启消息中间件
public class SpringBootWebRestfulcrudApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootWebRestfulcrudApplication.class, args);
    }

}

使用AmqpAdmin创建交换器和消息队列并绑定关系

@RestController
public class RabbitController {

    @Autowired
    AmqpAdmin amqpAdmin;

    /**
     * 创建Exchange和Queue并绑定关系
     * 删除
     */
    @PublicInterface
    @RequestMapping("/test/create")
    public void create(){
        /**
         * 创建Exchange(交换器)
         * new DirectExchange:创建什么类型的Exchange
         * 里面的参数可根据需要进行填写,如:是否持久化、是否自动删除
         */
        amqpAdmin.declareExchange(new DirectExchange("zhao.exchange"));
        /**
         * 创建Queue(消息队列)
         * new Queue:创建Queue
         * 参数同理
         */
        amqpAdmin.declareQueue(new Queue("zhao.queue",true));
        /**
         * 创建绑定规则
         * 参数1:目的地
         * 参数2:队列(QUEUE)
         * 参数3:Exchange名称
         * 参数4:路由键
         * 参数5:消息头
         */
        amqpAdmin.declareBinding(new Binding("zhao.queue",Binding.DestinationType.QUEUE,
                "zhao.exchange","zhao.ha",null));
        //删除对应的操作
        //amqpAdmin.deleteExchange("zhao.exchange");
        //amqpAdmin.deleteQueue("zhao.queue");
    }
}

运行访问创建接口,即可创建交换器和消息队列并绑定他们之间的关系

发送消息代码测试

@RestController
public class RabbitController {

    /**
     * 自动配置
     * 1、RabbitAutoConfiguration
     * 2、有自动配置连接工厂:ConnectionFactory
     * 3、RabbitProperties 封装的 RabbitMQ的配置
     * 4、RabbitTemplate: 给RabbitMQ发送和接收消息
     * 5、AmqpAdmin:系统管理功能组件
     *   AmqpAdmin:创建和删除、Queue、Exchange、Binding
     */
    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 单播(点对点)
     * 给消息中间件发送消息
     */
    @PublicInterface
    @RequestMapping("/test/convertAndSend")
    public void contextLoads(Integer id){
        TestUser user = new TestUser();
        user.setToken("token");
        user.setUserId(id);
        user.setUserName("张胜");
        user.setUserPass("123456");
        //对象被序列化以后发送出去
        rabbitTemplate.convertAndSend("exchang.direct","atguigu.emps",user);
    }

    /**
     * 单播(点对点)
     * 读取消息中间件中的消息
     */
    @PublicInterface
    @RequestMapping("/test/receive")
    public void receive(){
        Object obj = rabbitTemplate.receiveAndConvert("atguigu.emps");
        System.out.println(obj);
    }
}

可以发送消息和接收消息。这个是你发送了消息需要手动的去接收消息,下面展示发送消息自动接收,发送消息接口不变,然后在service层方法上使用==@RabbitListener==注解即可自动接收消息。

@Service
public class RabbitServiceImpl {

    /**
     * 直接返回实体对象
     * @param user
     */
    @RabbitListener(queues = "atguigu.emps")
    public void rabbitTest(TestUser user){
        System.out.println("收到消息"+user);
    }

    /**
     * 返回消息头等信息
     */
//    @RabbitListener(queues = "atguigu.emps")
    public void rabbitTests(Message message){

        System.out.println("收到消息"+message.getBody());
    }

}

控制台就会自动打印接收的消息。

【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门 【推荐】RabbitMQ快速入门 1小时上手学会RabbitMQ 阅读详情

相关推荐

RabbitMQ 从入门到精通

消息中间件基于队列模型实现异步/同步传输数据作用:可以实现支撑高并发、异步解耦、流量削峰、降低耦合度。

rc1596919047的博客 1867

乐优商城(二十四)——RabbitMQ及数据同步

目录 一、RabbitMQ 1.1 搜索与商品服务的问题 1.2 消息队列(MQ) 1.2.1 什么是消息队列 1.2.2 AMQP和JMS 1.2.3 常见MQ产品 1.2.4 RabbitMQ 1.3 下载和安装 1.3.1 下载 1.3.2 安装 二、五种消息模型 2.1 基本消息模型 2.1.1 生产者发送消息 2.1.2 管理工具中查看消息 2.1.3 消费...

lyj2018gyq的博客 3738

RabbitMQ入门案例

案例中生产者叫做 Task,一个消费者就是一个工作队列,启动两个工作队列消费消息,这个两个工作队列会以轮询的方式消费消息。假设生产者生产 AA BB CC DD这四条消息,理论上工作线程C1和工作线程C2轮询接收到消息,期望测试结果如下。轮询消费消息指的是轮流消费消息,即每个工作队列都会获取一个消息进行消费,并且获取的次数按照顺序依次往下轮流。创建一个类作为消费者,消费 RabbitMQ 队列的消息,消息消费是通过Channel来完成的。在运行第二个工作线程,此时已经开了两个工作线程,如下。

不怕万人阻挡,只怕自己投降 1775

RabbitMQ 超详细入门篇

MQ全称为MessageQueue即是在消息的传输过程中保存消息的容器它是典型的:生产者————消费者模型生产者不断向消息队列中生产消息————————消费者不断的从队列中获取消息.这样的好处:生产者只需要关注发消息,消费者只需要关注收消息,二者没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦.或者说MQ有什么好处,MQ主要可以实现三种功能:场景:服务A产生数据,而服务B,C,D需要这些数据那么我们可以在A服务中直接调用B,C,D服务,把数据传递到下游服务即可;但随着我们的应用规模不断扩

慈様 1万+

Code Composer Studio 12.0.0版本 官方例程导入实战指南

本文详细介绍了在Code Composer Studio 12.0.0版本中,如何利用内置的Resource Explorer工具高效导入官方例程的完整实战指南。通过分步讲解定位开发板、导入工程、配置编译器及调试验证等关键操作,帮助开发者快速上手TI微控制器开发,避免常见错误,有效提升学习与开发效率。

weixin_29169899的博客 120

IEDA激活码失效?教你5分钟快速续期的方法

本文针对IEDA激活码失效问题,提供了一套从快速应急到深度排查的完整解决方案。文章不仅详解了5分钟快速续期与清理缓存等应急方法,更深入剖析了授权机制、离线激活流程,并指导如何构建可持续的授权管理策略,帮助开发者彻底解决激活困扰,确保开发环境稳定。

a0b1c2d3的专栏 273

RabbitMQ 入门教程看这一篇就够了

RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。支持主流的操作系统,Linux、Windows、MacOX等多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

程序员子龙 554

【图形学】Loop细分算法及半边结构实现(C++)

文章目录Loop 细分算法介绍增加新顶点更新旧顶点算法实现半边结构半边结构的表示方法半边结构的构造方法创建所有顶点创建所有面及半边半边结构的使用 Loop 细分 顾名思义,网格细分是将粗糙网格精细化的过程,如下动图。Loop细分是众多网格细分算法的一种,Loop细分仅仅对三角形网格模型有效。值得注意的是,虽然叫Loop细分,但是不能理解为“循环”细分,叫这个名字是因为作者的名字是这个而已。 下面是一个粗糙的兔子模型1000个面,进行3次细分 算法介绍 Loop细分算法主要分两步进行 增加新顶点:增加

wk_119的博客 8066

RabbitMQ入门篇【图文并茂,超级详细】

消息队列--RabbitMQ【入门】

m0_74315688的博客 3849

工程创新训练大赛智能网联车辆赛道LKA+自动驾驶9000+分数分案例

/获取主车在主车路径上的ST坐标。if (status == AVPStatus::eForwarding) // approaching the parking space接近阶段。if (status == AVPStatus::eForwarding) // approaching the parking space接近阶段。if (status == AVPStatus::eForwarding) // approaching the parking space接近阶段。

handsomeboyou的博客 1131

微信小程序推广策略,打开小程序领域流量大门

本文旨在为小程序开发者、运营者和企业主提供一套完整的微信小程序推广策略体系,帮助他们在竞争激烈的小程序生态中获得更多流量和用户。内容涵盖从0到1的冷启动策略,到成熟期的增长技巧。本文将首先介绍小程序的基础推广设置,然后深入探讨各种流量获取渠道,接着分析数据驱动的优化方法,最后展望未来发展趋势。小程序:无需下载安装即可使用的应用,运行在微信生态内:独立访客数:页面浏览量转化率:完成目标行为的用户比例留存率:用户在一定时间后仍活跃的比例自然流量获取:通过优化搜索、完善资料等方式获得基础流量社交裂变。

小程序开发 1031

RabbitMQ的快速入门

RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的Erlang写成。

博客 1156

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3395

超详细的RabbitMQ入门

转载:超详细的RabbitMQ入门,看这篇就够了!-阿里云开发者社区 思维导图 一、什么是消息队列 消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。 “消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。 二、为什么使用消息队列 主要有三个作用

Rok728的博客 2万+

CAPL通过lookupSignal和DBLookup获取DBC信号的属性信息

CAPL通过lookupSignal和DBLookup获取DBC信号的属性信息以及一些相关问题

天赐好车的博客 2884

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RabbitMQ快速入门

RabbitMQ快速入门指南 本文介绍了RabbitMQ的基本概念和常见使用模式。首先讲解了通过Docker安装RabbitMQ的方法,并解释了核心概念如channel、exchange、queue和virtual host。然后详细介绍了三种消息队列模型:简单队列模型(单一生产者和消费者)、工作队列模型(多个消费者共同处理)和发布订阅模型(通过exchange实现消息广播)。文章提供了SpringBoot整合RabbitMQ的具体代码示例,包括生产者发送消息和消费者接收消息的实现方式,以及Fanout E

qq_45528306的博客 1272

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RabbitMQ入门小结

​ RabbitMQ概述 RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:Messaging that just works — RabbitMQ ​

一切总会归于平淡 2066

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【RabbitMQ】入门(超详细)

MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。今天将实现rabbitMQ的快速入门。

Jorgen_s的博客 1127

超详细的RabbitMQ入门,看这篇就够了

什么的消息队列?为什么使用消息队列?如何使用RabbitMQ?看这篇就够了

yehongzhi1994的博客 6204

RabbitMQ最新入门教程

1.什么是消息队列 2.为什么使用消息队列 3.消息队列协议 4.安装Erlang 5.安装RabbitMQ 6.RabbitMQ核心模块 7.RabbitMQ六大模式 7.1 简单模式 7.2 工作模式 7.3 发布订阅模式 7.4 路由模式 7.5 主题模式 7.6 RPC模式 8.RabbitMQ四种交换机 8.1 直连交换机 8.2 主题交换机 8.3 扇形交换机 8.4 首部交换机 9.RabbitMQ Management使用 9.1 Queues操作 9.2 Exchanges操作

自己在学习过程中的总结 3505

RabbitMQ3:Java客户端快速入门

AMQP:Advanced Message Queuing Protocol(高级消息队列协议)。解读:首先AMQP是一种协议,类似于http这种,规定了应用程序之间传递消息的标准。该协议与语言、平台无关,因此可实现跨语言、跨平台。Spring AMQP:是基于AMQP协议,定义的一套API规范。提供了模板来发送和接收消息。Spring AMQP官方网址:此时是生产者直接将消息放入队列,都没经过交换机这一环节。可见此入门案例,是helloworld级别的。t=O83A。

casually的博客 1500
上一篇: Spring缓存抽象
下一篇: SpringBoot使用JavaMailSender发送邮件
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值