文章目录
- 一、EasyNetQ是什么?
- 二、使用步骤
- 1.定义公共消息类
- 2.发布/订阅
- 4.消息通信
一、EasyNetQ是什么?
RabiitMQ Client
非常地灵活,但是伴随着灵活性而来是复杂性。这意味着你为了需要写大量代码,以便执行RabbitMQ client。通常,这些代码包括一下这些:
实现消息传递模式,例如Publish/Subscribe或Request/Response。尽管,公平来讲,这个 .NET client也提供了一些这样的支持。
实现路由策略。你将需要设计你如何去 exchange-queue 绑定。并且你将设计怎样在生产者和消费者之间进行消息路由。
实现消息的序列化/反序列化。 你将如何转换AMQP的二进制消息为你编程语言能理解的格式?
为订阅去实现一个消费者线程。你将需要有一个专门的消费者循环等待你订阅的消息。你会如何处理多个订阅者,或者瞬间订阅者,像哪些等待答复的请求。
实现消费者重新连接。假如连接崩溃了或者RabbitMQ 服务挂了,你怎样能检测到并确保你所有的订阅都能被重建?
懂得和实施服务质量设置。你需要什么样的设置来确保一个可靠的客户端。
实现一个错误处理策略。假如接受到一个错误的消息,或者发生一个未处理异常被抛出,你的客户端应该做什么呢?
实现发布者可靠的消息确认。
EasyNetQ
目标是在AMQP之上封装所有这些关注点在一个简单好用的类库中。
二、使用步骤
1.定义公共消息类
代码语言:javascript复制public class TextMessage
{
public string Text { get; set; }
}
2.发布/订阅
代码语言:javascript复制// See https://aka.ms/new-console-template for more information
using EasyNetQ;
using RabbitMQTest;
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
//订阅
bus.PubSub.Subscribe<TextMessage>("test", HandleTextMessage);
var input = "";
Console.WriteLine("Enter a message. 'Quit' to quit.");
//发布
while ((input = Console.ReadLine()) != "Quit")
{
bus.PubSub.Publish<TextMessage>(new TextMessage
{
Text = input
});
}
}
static void HandleTextMessage(TextMessage textMessage)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Got message: {0}", textMessage.Text);
Console.ResetColor();
}
4.消息通信
同时启动两者控制台代码