RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理

时间:2023-12-18 16:35:14

上一篇已经讲了Rabbitmq如何在Windows平台安装

不懂请移步: RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列

一、理论

.net环境下,C#代码订阅RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现,EasyNetQ 是一个易于使用的RabbitMQ的.Net客户端API,本文win服务基于topshelf实现,不懂请移步:windowsSevice程序和topshelf程序创建服务对比

二、项目搭建

1、此处省略topshelf服务搭建步骤

2、服务项目结构

3、结构简要说明

NoticeProcess.cs 获取消息体后处理类

BusBuilder.cs 消息服务器连接器

Installer.cs 消息服务安装实现类

ServiceMain.cs 消息服务执行类

VaultService.cs C#订阅消息服务后的处理类,进行routingkey的约束等

Program.cs 程序启动类

三、测试发布和订阅
1、发布消息(此处省略,具体实现参照第二篇文章)

2、C#订阅服务启动测试

3、C#服务调试获取消息

可以看到这里启动后,获取到了1步骤当中的消息routingkey

4、c#处理代码

如果队列有其他的pcm.notice.xxxxx消息,同样会被c#服务获取到,都是基于pcm.notice.#这样的#完全匹配原则。

这样基本简单的c#订阅Rabbitmq消息,获取信息就完成了。

问题整理:

如果C#读取的Rabbitmq中message消息实体和你c#程序中的不一样,会报错如下:

EasyNetQ.EasyNetQInvalidMessageTypeExcepion:Message type is incorrect.Expected 'RabbitMQ_Message:RabbitMQ',but was ''