• RabbitMQ在.NetCore中的使用


    概述

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

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

    使用

    安装Nuget包

    连接


    生产者

    创建队列


    可以看到除了QueueDeclare之外还有两种声明队列的方法。

    QueueDeclareNoWait:无返回值版

    QueueDeclarePassive:用来检查队列是否存在

    发布消息

    关闭通道及连接

    消费者

    定义消费者

    接收消息


    RabbitMQ采用消息应答机制,即消费者收到一个消息之后,需要发送一个应答,然后RabbitMQ才会将这个消息从队列中删除,如果消费者在消费过程中出现异常,断开连接却没有发送应答,那么RabbitMQ会将这个消息重新投递。
    确认消息已被消费

    或在启动消费者时将此参数传为true即可自动应答

    启动消费者

    设置手动应答消息

    关闭通道及连接

    交换机Exchange

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

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

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

    fanout模式:Exchange与队列进行绑定操作,转发给与之绑定的队列

    topic模式:与routeKey模糊匹配,符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词

    header模式:使用Headers(键值对)来匹配队列,使用较少

    引用

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

  • 相关阅读:
    高级软件工程第一次作业
    《高级软件工程》团队第二次作业
    《高级软件工程》结对第二次作业
    《高级软件工程》团队第一次作业
    《高级软件工程》结对第一次作业
    《高级软件工程》第二次作业
    《高级软件工程》第一次作业
    冲刺NO.1
    冲刺No.4
    冲刺No.3
  • 原文地址:https://www.cnblogs.com/muphalem/p/13777670.html
Copyright © 2020-2023  润新知