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
事件在異常發生後才引發,所以它也沒有幫助。
問題是,爲什麼它不立即拋出,所以我可以檢測到錯誤並採取行動?它表現得好像一些發佈成功,但實際上它們沒有成功。我能做些什麼來使客戶的行爲可預測?謝謝。