【发布时间】:2016-06-20 15:50:24
【问题描述】:
我正在使用 RabbitMQ 的 C# 客户端。
许多示例使用Console.ReadLine() 或while(true) 来保持连接打开以使用消息。
while(true) 会烧毁 CPU,ReadLine() 并不真正适用于 Web 服务器。
我正在使用 Asp.Net Core Web Service 并尝试为其编写一些测试。 在我的服务器的启动方法中,我称之为
Task.Factory.StartNew(() =>
{
using (IConnection connection = _connectionFactory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
// configuring queue etc....
options.DeclareConsumer(queueName, MessageReceived);
ResetEvent.WaitOne();
}
}
});
我不会在任何地方等待这项任务。当然,我希望我的网络服务器仍能处理请求。
在我的集成测试中,我将能够使用MailMessageQueue.ResetEvent.Set(); 停止线程,如果我不阻止我不需要,但如果我必须阻止它会很有帮助..
我有点困惑是否应该阻塞,我需要多少线程等等。 有什么有用的例子吗?
谢谢..
【问题讨论】: