2 Star 5 Fork 0

易联联 / Lails.MQClient

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

[TOC]

一、介绍

兼容主流消息队列服务的客户端SDK,目前支持RabbitMQ,未来支持Redis、AliyunONS、MQTT等。

二、安装

Install-Package Lails.MQClient

三、说明

1. Topic

消息以 “Topic” 的方式进行发布和订阅,Topic必须是一串由关键字用句号(.) 隔开组成的字符,如"gps.alarm","gps.alarm.key"等。

Topic支持使用通配符,“#”表示0个或若干个关键字,“*”表示一个关键字,如:

  • "gps.#":表示第一个关键字为“gps”的消息
  • "gps.*.key":表示第一个关键字“gps”,第三个关键字为"key"的消息。

2. ClientID

客户端名称,当多个订阅者使用同一名称时,表示以负载均衡的方式群集订阅;使用不同名称订阅时,表示各自订阅一份完整数据的广播订阅

四、示例

string consumername1 = "consumer1", consumername2 = "consumer1";    //独立订阅
//string consumername1 = "consumer", consumername2 = "consumer";    //共同订阅
MQClient consumer1 = new RabbitMQClient("mq.lails.cc", "root", "Lxs@rabbitmq", consumername1);
MQClient consumer2 = new RabbitMQClient("mq.lails.cc", "root", "Lxs@rabbitmq", consumername2);
consumer1.Connect();
consumer1.Subscribe("msg", data => 
{
    Console.WriteLine($"订阅1接收消息:{Encoding.UTF8.GetString(data)}");
    consumer1.UnSubscribe("msg");
    Console.WriteLine("退订consumer1");
    return true; //ACK
});
consumer2.Connect();
consumer2.Subscribe("msg", data =>
{
    Console.WriteLine($"订阅2接收消息:{Encoding.UTF8.GetString(data)}");
    consumer1.UnSubscribe("msg");
    Console.WriteLine("退订consumer1");
    return true; //ACK
});

MQClient publisher = new RabbitMQClient("mq.lails.cc", "root", "Lxs@rabbitmq", "publisher1");
publisher.Connect();
string message = "Rabbitmq Message";
byte[] body1 = Encoding.UTF8.GetBytes(message + "_01");
byte[] body2 = Encoding.UTF8.GetBytes(message + "_02");
publisher.Publish("msg", body1);
publisher.Publish("msg", body2);
Console.WriteLine($"发送消息:{message}");

Console.Read();

五、兼容性设计

1. Kafka

差异性:
  • 不支持“#”号通配符;
  • 支持以“|”号订阅多个Topic,如“(topic1) | (topic2)”
参考:

https://stackoverflow.com/questions/39520222/how-to-subscribe-to-a-list-of-multiple-kafka-wildcard-patterns-using-kafka-pytho

2. 兼容Redis

3. MQTT

4. 阿里云MQ


更新日志:

V0.2.3.0

  1. 订阅时,Topic的单层通配符由' '改为'*';

V0.3.0.0

  1. Framework版本降低到4.5

V0.3.1.0

  1. 新增Subscribe方法重载:
(string topic, Func<MessageData, bool> subscribe, MessageArgs arg = null)
# MessageData
public class MessageData
{
    public byte[] Data { get; set; }
    public string Topic { get; set; }
}

支持返回接收消息的主题

V0.4.0.0

  1. 拆分项目为Lails.MQClient.Core和Lails.MQClient.RabbitMQ,将不同MQ实现分离;

V0.4.0.1

  1. RabbitMQClient构造函数中,支持IP:PORT拆分逻辑片;
  2. 添加 RabbitMQ.Client v5.1.0 依赖库 Microsoft.Diagnostics.Tracing.EventSource

空文件

简介

兼容主流消息队列服务的客户端SDK,目前支持RabbitMQ,未来支持Redis、AliyunONS、MQTT等。 展开 收起
C#
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/Lails/Lails.MQClient.git
git@gitee.com:Lails/Lails.MQClient.git
Lails
Lails.MQClient
Lails.MQClient
master

搜索帮助