RabbitMQ C#API中的消息接收事件
我正在尝试实现一个WinForm RabbitMQ客户机,在该客户机中,我从服务器接收消息,如下所示-RabbitMQ C#API中的消息接收事件,c#,rabbitmq,C#,Rabbitmq,我正在尝试实现一个WinForm RabbitMQ客户机,在该客户机中,我从服务器接收消息,如下所示- private void Form1_Load(object sender, System.EventArgs e) { backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { var factory = ne
private void Form1_Load(object sender, System.EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
var factory = new ConnectionFactory() { HostName = "192.168.100.6", Password = "pass", UserName = "username" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("CallCenter", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("CallCenter", true, consumer);
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
MessageBox.Show(message);
}
}
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
}
backgroundWorker1.Dispose();
}
我很确定这不是一个好办法。相反,如果有一个OnMessageReceived
事件会更好
您有关于RabbiMQ中基于事件的消息接收的好例子吗 你这样做是正确的<代码>consumer.Queue.Dequeue()本质上是一个OnMessageReceived,它是一个阻塞调用,它坐在那里等待rabbit向它发送消息