当前位置: 代码迷 >> 综合 >> EasyNetQ使用Publish/Subscribe
  详细解决方案

EasyNetQ使用Publish/Subscribe

热度:65   发布时间:2024-01-11 21:44:24.0

使用的模式主要有三种Publish/Subscribe,Request/ResponseSend/Receive 

Publish/Subscribe

//Publish代码
using EasyNetQ;
using Message;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Publisher {class Program {static void Main(string[] args) {var connStr = "host=127.0.0.1;virtualHost=TESTVHOST;username=admin;password=abc123";using (var bus = RabbitHutch.CreateBus(connStr)) {var input = "";Console.WriteLine("Please enter a message. 'Quit' to quit.");while ((input = Console.ReadLine()) != "Quit") {bus.Publish(new TextMessage {Text = input});}}}}
}
//Subscriber 代码
using EasyNetQ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Message;namespace Subscriber {class Program {static void Main(string[] args) {var connStr = "host=127.0.0.1;virtualHost=TESTVHOST;username=admin;password=abc123";using (var bus = RabbitHutch.CreateBus(connStr)) {bus.Subscribe<TextMessage>("my_test_subscriptionid", HandleTextMessage);Console.WriteLine("Listening for messages. Hit <return> to quit.");Console.ReadLine();}}public static void HandleTextMessage(TextMessage textMessage) {Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("Got message: {0}", textMessage.Text);Console.ResetColor();}}
}

运行后可以看到发布端消息发布后订阅端就会订阅到相关消息

上述模式在RabbitMQ中会创建以程序命名空间和类名的交换机Message.TextMessage, Message和Message.TextMessage, Message_my_test_subscriptionid 的队列

发布消息的方法

                    bus.Publish(new TextMessage {Text = input});

订阅消息的方法

                bus.Subscribe<TextMessage>("my_test_subscriptionid", textMessage => {Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("Got message: {0}", textMessage.Text);Console.ResetColor();});
  相关解决方案