0
下面是一个使用4.1.1版本RabbitMQ.Client
一个简单的程序:的RabbitMQ .NET客户端确实没有引发错误立即
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
事件在异常发生后才引发,所以它也没有帮助。
问题是,为什么它不立即抛出,所以我可以检测到错误并采取行动?它表现得好像一些发布成功,但实际上它们没有成功。我能做些什么来使客户的行为可预测?谢谢。