使用的模式主要有三种Publish/Subscribe,Request/Response,Send/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();});