RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景。

使用

安装Nuget包

RabbitMQ在.NetCore中的使用

连接

RabbitMQ在.NetCore中的使用
RabbitMQ在.NetCore中的使用

生产者

创建队列

RabbitMQ在.NetCore中的使用
可以看到除了QueueDeclare之外还有两种声明队列的方法。

QueueDeclareNoWait:无返回值版

QueueDeclarePassive:用来检查队列是否存在
RabbitMQ在.NetCore中的使用

发布消息

RabbitMQ在.NetCore中的使用

关闭通道及连接

RabbitMQ在.NetCore中的使用

消费者

定义消费者

RabbitMQ在.NetCore中的使用

接收消息

RabbitMQ在.NetCore中的使用
RabbitMQ采用消息应答机制,即消费者收到一个消息之后,需要发送一个应答,然后RabbitMQ才会将这个消息从队列中删除,如果消费者在消费过程中出现异常,断开连接却没有发送应答,那么RabbitMQ会将这个消息重新投递。
确认消息已被消费
RabbitMQ在.NetCore中的使用
或在启动消费者时将此参数传为true即可自动应答
RabbitMQ在.NetCore中的使用

启动消费者

设置手动应答消息
RabbitMQ在.NetCore中的使用

关闭通道及连接

RabbitMQ在.NetCore中的使用

交换机Exchange

AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。同理,消费者也是如此。Exchange 就类似于一个交换机,将各个消息分发到相应的队列中。

RabbitMQ提供了四种Exchange模式:direct,fanout,topic,header

direct模式:转发给routeKey完全匹配的队列,在发布消息时未指定Exchange的情况下使用的rabbitMQ自带default Exchange即direct模式

fanout模式:Exchange与队列进行绑定操作,转发给与之绑定的队列
RabbitMQ在.NetCore中的使用
topic模式:与routeKey模糊匹配,符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词
RabbitMQ在.NetCore中的使用
header模式:使用Headers(键值对)来匹配队列,使用较少

引用

部分资料来源于 晓晨Master
[https://www.cnblogs.com/stulzq/p/7551819.html]

相关文章:

  • 2022-12-23
  • 2021-06-03
  • 2022-12-23
  • 2022-12-23
  • 2018-12-11
  • 2021-09-06
  • 2021-09-28
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2021-08-02
  • 2021-04-19
  • 2021-12-13
  • 2021-11-04
相关资源
相似解决方案