使用Azure ServiceBus和OnMessage調用我正在尋找一種方法來確定OnMessage事件泵是否停止從隊列中讀取數據。Azure服務總線,確定OnMessage是否停止處理
我們到的onMessage連接的配置如下:
protected virtual void DoSubscription(string queueName, Func<QueueRequest, bool> callback)
{
var client = GetClient(queueName, PollingTimeout);
var transformCallback = new Action<BrokeredMessage>((message) =>
{
try
{
var request = message.ToQueueRequest();
if (callback(request))
{
message.Complete();
}
else
{
message.Abandon();
Log.Warn("DoSubscription: Message Failed to Process Gracefully: {0}{1}", Environment.NewLine, JsonConvert.SerializeObject(request));
}
}
catch (Exception ex)
{
Log.Error("DoSubscription: Message Failed to Process With Exception:", ex);
message.Abandon();
}
});
var options = new OnMessageOptions
{
MaxConcurrentCalls = _config.GetInt("MaxThreadsPerQueue"),
AutoComplete = false,
AutoRenewTimeout = new TimeSpan(0,0,1)
};
options.ExceptionReceived += OnMessageError;
client.OnMessage(transformCallback, options);
}
我們所遇到的問題是一段時間沒有消息正在排隊進行排隊未能通過的onMessage事件被拾起新郵件後泵直到應用程序重新啓動。
我知道有些方法可以使用Worker Roles來實現這一點,但是出於監視和管理的目的,我們決定在Web應用程序的Application Start中實現這一點。
您是否檢查死郵隊隊列?如果那裏有消息,你應該能夠看到你的消息處理失敗的原因。 – mert
在DL他們只是超時。以編程方式,該過程剛剛停止。 – VulgarBinary