RabbitMQ.消息发布与订阅
执行效果如下:

需要添加的第三方库为:RabbitMQ.Client


完整代码如下:
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox2.Text += $"启动接收\r\n";
var factory = new ConnectionFactory();
factory.HostName = "HostName";
factory.UserName = "UserName";
factory.Password = "Password";
var connection = factory.CreateConnection();
var channel = connection.CreateModel();
channel.QueueDeclare("kibaQueue", false, false, false, null);
var consumer = new EventingBasicConsumer(channel);//消费者
channel.BasicConsume("kibaQueue", true, consumer);//消费消息
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body.ToArray());
BeginInvoke(new Action(() =>
{
textBox2.Text += $"收到消息:{message}\r\n";
}));
};
}
/// <summary>
/// 发送部分
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
var factory = new ConnectionFactory();
factory.HostName = "HostName";
factory.UserName = "UserName";
factory.Password = "Password";
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
string message = textBox1.Text; //传递的消息内容
textBox2.Text += $"发送消息:{message}\r\n";
channel.QueueDeclare("kibaQueue", false, false, false, null);//创建一个名称为kibaQueue的消息队列
var properties = channel.CreateBasicProperties();
properties.DeliveryMode = 1;
channel.BasicPublish("", "kibaQueue", properties, Encoding.UTF8.GetBytes(message)); //生产消息
Console.WriteLine($"Send:{message}");
}
}
}
}
}