【问题标题】:Message received event in RabbitMQ C# APIRabbitMQ C# API 中的消息接收事件
【发布时间】:2015-03-22 07:55:53
【问题描述】:

我正在尝试实现一个 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 中接收基于事件的消息的好例子吗?

【问题讨论】:

    标签: c# rabbitmq


    【解决方案1】:

    你的做法是正确的。 consumer.Queue.Dequeue(); 本质上是一个 OnMessageReceived,它是一个阻塞调用,等待从 rabbit 发送给它的消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多