【发布时间】:2017-03-06 15:04:24
【问题描述】:
这是一个使用RabbitMQ.Client 4.1.1 版本的简单程序:
var message = Encoding.UTF8.GetBytes("test");
var cf = new ConnectionFactory();
using (var conn = cf.CreateConnection())
using (var channel = conn.CreateModel())
{
int i = 1;
while (true)
{
Console.WriteLine(i++);
channel.BasicPublish("nonexistent", "", body: message);
}
}
在这里,我正在尝试发布到尚未在服务器上声明的交易所。这会导致一个错误,即 404,NOT_FOUND - no exchange 'nonexistent' in vhost '/',被抛出。但是,错误不会在第一次调用 BasicPublish 时立即抛出,而是随机抛出。我在 8、22、40 次调用 BasicPublish 等之后将其抛出。ModelShutdown 事件仅在异常之后引发,因此它也无济于事。
问题是,为什么它不立即抛出,以便我可以检测到错误并采取措施?它表现得好像许多发布成功了,而实际上它们没有成功。我可以做些什么来使客户的行为可预测?谢谢。
【问题讨论】:
标签: c# .net rabbitmq rabbitmq-exchange