[英]Message received event in RabbitMQ C# API
我正在嘗試實現一個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發送消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.