RabbitMQ入门

1、生产者与消费者

Producer:

生产者就是投递消息的一方。消息包含两个部分:消息体(payload)和标签(label)。

Consumer:

消费者就是接收消息的一方。消费者连接到RabbitMQ服务器,订阅到队列上。当消费者消费一条消息时,只是消费消息的消息体(payload)。

Broker:

消息中间件的服务节点。大多数情况下可以将RabbitMQ Broker看作一台RabbitMQ 服务器。

2、队列

queue:队列,是RabbitMQ的内部对象,用于存储消息。
RabbitMQ中消息只能存储在队列中,这一点和kafka消息中间件相反,kafka将消息存储在topic这个逻辑层面。

3、交换器、路由键、绑定

Exchange:

交换器。生产者将消息投递到队列中时,生产者将消息发送到Exchange,由交换路由器路由到一个或则多个队列中。

RoutingKey:

路由键。生产者将消息发给交换器的时候,一般会制定一个RoutingKey,用来指定这个消息的路由规则,而这个RoutingKey需要与交换器类型和绑定键联合使用才生效。

Binding:

绑定。RabbitMQ中通过绑定将交换器与队列关联起来,在绑定的时候一般会指定一个绑定键(BindingKey),这样RabbitMQ就知道如何正确的将消息路由给队列了。

交换器类型:

1、fanout

把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。

2、direct

把消息路由到那些BindingKey和RoutingKey完全匹配的队列中

3、topic

topic在匹配规则上进行了扩展,它与direct类型相似,也是将消息路由到BindingKey和RoutingKey相匹配的队列中,但匹配规则不同:

  • RoutingKey为一个“.”分割的字符串
  • BindingKey和RoutingKey一样也是“.”分隔的字符串
  • BindingKey中可以存在两种特殊字符串“ * ”、“#”,其中“#”用于匹配一个单词,“ * ” 用于匹配多规格单词。

4、headers

不依赖路由键的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。这个类型性能差,不实用。

4、RabbitMQ工作流程

1、生产者发送消息:

  • 生产者连接到RabbitMQ Broker建立一个连接(connection),开启一个信道(chanel)。
  • 生产者声明一个交换器,设置相关属性,交换器类型、是否持久化
  • 生产者声明一个队列设置的相关属性,是否排他、是否持久化、是否自动删除
  • 生产者通过路由键将交换器和队列绑定起来
  • 生产者发送消息至RabbitMQ Broker,其中包含路由键、交换器信息等
  • 相应的交换器根据接收到的路由键查找相匹配的队列
  • 如果找到,则将生产则发送过来的消息存入相应的队列
  • 如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者
  • 关闭信道
  • 关闭连接

2、消费者接收消息:

  • 消费者连接到RabbitMQ Broker,建立了一个连接,开启了一个信道
  • 消费者向RabbitMQ Broker请求消费相应队列中的消息,可能会设置相应的回调函数,以及做一些准备工作
  • 等待RabbitMQ Broker回应并投递相应队列中的消息,消费者接收消息
  • 消费者确认(ack)接收到的消息
  • RabbitMQ从队列中删除相应已经被确认的消息
  • 关闭信道
  • 关闭连接

5、AMQP协议介绍

AMQP: Advanced Message Queuing Protocol即高级消息队列协议

RabbitMQ遵循AMQP协议包括交换器、队列、绑定、路由键等。

AMQP协议三层

  • Module Layer:最高层,定义客户端调用命令,客户端可以利用这些命令实现自己的业务逻辑
  • Session Layer:中间层,主要负责将客户端的命令发送给服务器,再讲服务端的应答返回给客户端,主要为客户端与服务器之间的通信提供可靠性同步机制和错误处理。
  • Transport Layer:最底层,主要传输二进制数据流,提供帧的处理、信道复用、错误检测和数据表示。

6、总结

学习到了生产者、消费者、队列、交换器、路由键、绑定、连接、信道等基本术语。学习到了交换器的四中类型,对交换器匹配队列有了初步的了解;对AMQP协议有了了解。

附件 思维导图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RabbitMQ是一款使用Erlang语言开发的开源消息中间件,实现了AMQP(高级消息队列协议)。它具有以下特点: 1. 可靠性:支持持久化、传输确认、发布确认等机制,保证了消息的可靠性。 2. 灵活的消息分发策略:消息在进入RabbitMQ之前由交换机进行路由,可以根据不同的分发策略进行消息的分发,包括简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式等。 3. 支持集群:多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker,提高了可用性和扩展性。 4. 支持多种协议和语言客户端:RabbitMQ支持多种消息队列协议,如STOMP、MQTT等,同时也支持多种编程语言的客户端。 5. 可视化管理界面:RabbitMQ提供了一个易用的用户界面,方便用户监控和管理消息Broker。 6. 插件机制:RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。 要开始使用RabbitMQ,首先需要安装RabbitMQ并配置相关信息。在Windows系统中,可以按照官方文档的指引进行安装。在配置文件中,需要指定RabbitMQ的主机、端口、用户名和密码等信息。 参考资料: \[1\] RabbitMQ官网 \[2\] application.yml配置文件 \[3\] RabbitMQ入门指南文章 希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *2* *3* [超详细的RabbitMQ入门](https://blog.csdn.net/Rok728/article/details/123106242)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Energet!c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值