RabbitMQ - Snet Docs

🐰 RabbitMQ 中间件

包名: Snet.RabbitMQ | 类: RabbitMQOperate | 基类: MqAbstract<RabbitMQOperate, RabbitMQData.Basics>

通过 RabbitMQ 提供 AMQP 0-9-1 消息传递。支持交换机、队列、路由键以及标准的发布/订阅模式,用于工业消息代理。

概述

RabbitMQOperate 连接到 RabbitMQ 服务器,并实现了 IMq 接口(IProducer + IConsumer),通过 AMQP 进行消息生产和消费。它继承自 MqAbstract<RabbitMQOperate, RabbitMQData.Basics>

安装

dotnet add package Snet.RabbitMQ

快速开始

using Snet.RabbitMQ;

var rabbit = new RabbitMQOperate(new RabbitMQData.Basics
{
    IpAddress = "127.0.0.1",
    Port = 6688
});

await rabbit.OnAsync();

// 绑定事件再消费
rabbit.OnDataEventAsync += async (sender, e) =>
{
    if (e.Status)
        Console.WriteLine($"接收到数据: {e.ResultData}");
    else
        Console.WriteLine($"消费失败: {e.Message}");
};

await rabbit.ConsumeAsync("snet.route");

// 生产消息(可选)
await rabbit.ProduceAsync("snet.route", "hello mqtt", System.Text.Encoding.UTF8);

// 后续:取消消费
// await rabbit.UnConsumeAsync("snet.route");
// await rabbit.DisposeAsync();

配置

参数 类型 默认值 描述
SN string 序列号 / 设备标识符
IpAddress string "127.0.0.1" RabbitMQ 服务器 IP 地址
Port int 6688 AMQP 端口
UserName string "shunnet" AMQP 登录用户名
Password string "shunnet" AMQP 登录密码
ExChangeName string "exchang" 发布消息的交换机名称
MessageExpirationTime int 86400000 消息过期时间(毫秒)
ResponseType enum Content 响应类型

交换机类型

类型 描述
Direct 将消息路由到绑定键与路由键完全匹配的队列
Topic 将消息路由到绑定键模式与路由键匹配的队列(支持 *# 通配符)
Fanout 将消息路由到所有绑定的队列,忽略路由键
Headers 基于消息头而非路由键进行消息路由

支持的操作

操作 方法 描述
连接 OnAsync() 连接到 RabbitMQ 服务器
断开 OffAsync() 断开与服务器的连接
发布 ProduceAsync(topic, string, Encoding?) 向交换机发布带有路由键的字符串消息
发布 ProduceAsync(topic, byte[]) 发布原始字节
订阅 ConsumeAsync(topic) 绑定队列并开始消费
取消订阅 UnConsumeAsync(topic) 取消订阅

事件

事件 签名 描述
OnDataEvent EventHandler<EventDataResult> 从队列消费到消息时触发
OnDataEventAsync EventHandlerAsync<EventDataResult> OnDataEvent 的异步变体
OnInfoEvent EventHandler<EventInfoResult> 收到状态和代理信息时触发
OnInfoEventAsync EventHandlerAsync<EventInfoResult> OnInfoEvent 的异步变体
OnLanguageEvent EventHandler<EventLanguageResult> 语言变更时触发
OnLanguageEventAsync EventHandlerAsync<EventLanguageResult> OnLanguageEvent 的异步变体

另请参阅