当消费者阻止从SharedQueue接收消息时,我得到以下异常:
Unhandled Exception: System.IO.EndOfStreamException: SharedQueue closed
at RabbitMQ.Util.SharedQueue.EnsureIsOpen()
at RabbitMQ.Util.SharedQueue.Dequeue()
at Consumer.Program.Main(String[] args) in c:\Users\pdecker\Documents\Visual
Studio 2012\Projects\RabbitMQTest1\Consumer\Program.cs:line 33
Run Code Online (Sandbox Code Playgroud)
以下是抛出异常时正在执行的代码行:
BasicDeliverEventArgs e = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经看到当rabbitMQ处于非活动状态时发生异常.我们的应用程序需要让消费者始终连接并聆听按键操作.有谁知道这个问题的原因?有谁知道如何从这个问题中恢复?
提前致谢.
小智 3
消费者与渠道绑定:
var consumer = new QueueingBasicConsumer(channel);
Run Code Online (Sandbox Code Playgroud)
Queue因此,如果通道已关闭,那么一旦本地被清除,消费者将无法获取任何其他事件。
检查通道是否打开
channel.IsOpen == true
Run Code Online (Sandbox Code Playgroud)
并且队列有可用事件
if( consumer.Queue.Count() > 0 )
Run Code Online (Sandbox Code Playgroud)
致电之前:
BasicDeliverEventArgs e = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
Run Code Online (Sandbox Code Playgroud)
更具体地说,我会在致电之前检查以下内容Dequeue()
if( !channel.IsOpen || !connection.IsOpen )
{
Your_Connection_Channel_Init_Function();
consumer = new QueueingBasicConsumer(channel); // consumer is tied to channel
}
if( consumer.Queue.Any() )
BasicDeliverEventArgs e = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3930 次 |
| 最近记录: |