(十四)笔记.net学习之RabbitMQ工作模式
创始人
2024-03-21 22:20:45
0

RabbitMQ在.net中简单使用

  • 一、简单模式
      • 1.生产者
      • 2.消费者
  • 二、工作队列模式
      • 1.工作队列模式介绍
      • 2.生产者发送消息
      • 3.消费能力
  • 三、发布/订阅模式
      • 1.介绍
      • 2.生产者
      • 3.消费者
  • 四、Routing路由模式
      • 1.介绍
      • 2.生产着
      • 3.消费者
  • 五、topic 主题模式
      • 1.介绍
      • 2. 生产者
      • 3.消费者

一、简单模式

1.生产者

创建RabbitMQ工厂,将基础信息放入进去
​​​​​​​​​​在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.消费者

创建连接信息则是和生产者一样
在这里插入图片描述
在这里插入图片描述

二、工作队列模式

1.工作队列模式介绍

工作队列模式(Work Queues)与简单模式代码几乎是一样得,可以完全复制,对多个消费者发送信息。如下图得模式
在这里插入图片描述

2.生产者发送消息

在这里插入图片描述
唯一不同得是消费者在接收消息是得队列名称
在这里插入图片描述

3.消费能力

设置不同得消费者,不同得消费能力,当basicQos函数得第二个参数设置为1时,则每次只接收一条信息,每接收一条处理一条
在这里插入图片描述

三、发布/订阅模式

1.介绍

无选择接收消息,一个消息生产者,一个交换器,多个消息队列,多个消费者。称为发布/订阅模式。

简单队列模式和工作模式只能消费同种消息

门户网站,用户在注册完后一般都会发送消息通知用户注册成功(失败)。

如果在一个系统中,用户注册信息有邮箱、手机号,那么在注册完后会向邮箱和手机号都发送注册完成信息(假设都发送)。

利用 MQ 实现业务异步处理,如果是用工作队列的话,就会声明一个注册信息队列。注册完成之后生产者会向队列提交一条注册数据,消费者取出数据同时向邮箱以及手机号发送两条消息。但是实际上邮箱和手机号信息发送实际上是不同的业务逻辑,不应该放在一块处理。

这个时候就可以利用发布/订阅模式将消息发送到转换机(EXCHANGE),声明两个不同的队列(邮箱、手机),并绑定到交换机。这样生产者只需要发布一次消息,两个队列都会接收到消息发给对应的消费者
在这里插入图片描述

2.生产者

生产者发送天气方法,声明队列可以在消费者那边声明。
在这里插入图片描述

3.消费者

消费者1百度,接收天气消息
在这里插入图片描述
如果增加一个消费者2, 只需改变绑定即可
在这里插入图片描述
增加其它得也是如此。
在这里插入图片描述
与工作队列不同得是,多了声明交换机和绑定交换机得步骤,其中ExchangeType为选择交换机类型。
在这里插入图片描述

四、Routing路由模式

1.介绍

路由模式为生产者发送的消息主要根据定义的路由规则决定往哪个队列发送。
在这个模式中,交换机和队列绑定得时候多了一个筛选步骤,也就是多了一个routingkey.
在这里插入图片描述

2.生产着

首先设定好RoutingKey
在这里插入图片描述

3.消费者

在消费者这边也必须绑定生产者发送得RoutingKey才能接收指定得消息如下所示
在这里插入图片描述
其它消费者也是如此
在这里插入图片描述
运行结果,可以看到和我们指定得是一样得
在这里插入图片描述

五、topic 主题模式

1.介绍

主题模式为生产者,一个交换机(topicExchange),模糊匹配路由规则,多个队列,多个消费者。

  1. Topic类型与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定RoutingKey的时候使用通配符。
  2. RoutingKey一般都是由一个或多个单词组成,多个单词之间以“.”分隔,例如:
    item.insert
  3. 通配符规则:#匹配一个或多个词,*恰好匹配一个词,例如item.#能够匹配item.insert.user或者item.insert,item.*只能匹配item.insert或者item.user

2. 生产者

此处生产者可以与路由模式相同,没有变化
在这里插入图片描述

3.消费者

如下图,routingKey处使用得是“#”,也就是说接收有关china后得所有消息
在这里插入图片描述
此处使用“*”,也就是说只接收湖北相关得信息。
在这里插入图片描述

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...