雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

EasyNetQ使用方法示例附源码

2024-10-16 31

使用Nuget安装EasyNetQ

本示例源码下载 http://www.leavescn.com/Files/downloads/MQTest.zip

创建连接:

使用EasyNetQ连接RabbitMQ,是在应用程序启动时创建一个IBus对象,并且,在应用程序关闭时释放该对象。

RabbitMQ连接是基于IBus接口的,当IBus中的方法被调用,连接才会开启。

发布消息Publish

bus1 = RabbitHutch.CreateBus(connectionStr);
var message = new MyMessage { Text = richTextBox1.Text };
//发布消息
bus1.Publish(message);

订阅消息Subscribe

bus2 = RabbitHutch.CreateBus(connectionStr);
//订阅消息
//点击按钮订阅,订阅后只要发布新的消息,收到消息后就会执行修改richTextBox2.Text的值
//用同一个subscribeid订阅了同一种消息类型两次或者多次,RabbitMQ会轮着给两个订阅发消息(两个订阅不会同时收到消息)
bus2.Subscribe<MyMessage>("subscribeid_1", (msg) => {
    string value = msg.Text;
    richTextBox2.Text += value+"\r\n";
});

可以自己定义队列名称的发送消息Send/接受消息Receive

发送消息Send

bus1 = RabbitHutch.CreateBus(connectionStr);
//发送端代码
bus1.Send("queuename_1", new MyMessage { Text = richTextBox3.Text });

接受消息Receive

bus2 = RabbitHutch.CreateBus(connectionStr);
bus2.Receive<MyMessage>("queuename_1", message => richTextBox2.Text += message.Text + "\r\n");

程序结束的时候关闭EasyNetQ使用的连接,渠道,消费者和所有其他资源。本示例中在窗口关闭时,关闭连接。

private void Form1_FormClosed_1(object sender, FormClosedEventArgs e)
{
    if (bus1 != null)
    {
        bus1.Dispose();
    }
    if (bus2 != null)
    {
        bus2.Dispose();
    }
    if (bus3 != null)
    {
        bus3.Dispose();
    }
}

以上是EasyNetQ的publish,Subscribe,Send和Receive基本用法。

登录RabbitMQ管理后台队列里可以看到

执行bus2.Subscribe<MyMessage>("subscribeid_1", (msg) =>{});订阅时,如果是第一次订阅,Queues队列里会增加一个名为MQTest.MyMessage, MQTest_subscribeid_1的队列。

执行bus1.Send("queuename_1", obj);发送时,如果不存在queuename_1队列时,会增加一个名为queuename_1的队列。

执行bus5.Receive<MyMessage>("queuename_2", message => {});接受消息时,如果不存在queuename_2队列时,会新增一个名为queuename_2的队列。

更新于:1个月前
赞一波!

文章评论

评论问答