gpt4 book ai didi

c# - RabbitMQ C# API 中的消息接收事件

转载 作者:行者123 更新时间:2023-11-30 17:44:40 26 4
gpt4 key购买 nike

我正在尝试实现一个 WinForm RabbitMQ 客户端,我在其中从服务器接收消息,如下所示-

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 发送给它。

关于c# - RabbitMQ C# API 中的消息接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com