Utilizzo di Azure ServiceBus e della chiamata OnMessage Sto cercando un modo per determinare se la pompa di eventi OnMessage interrompe la lettura dalla coda.Azure Service Bus, determinare se OnMessage interrompe l'elaborazione
La nostra connessione a OnMessage è configurato come di seguito:
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);
}
Il problema che stiamo incontrando è dopo un periodo di tempo senza messaggi di essere in coda i nuovi messaggi in coda non essere raccolto dall'evento OnMessage pompa fino al riavvio dell'applicazione.
Mi rendo conto che ci sono modi per farlo utilizzando i ruoli di lavoro, tuttavia per scopi di monitoraggio e gestione, abbiamo deciso di implementarlo nell'applicazione Avvio di un'app Web.
Hai controllato la coda dei deadletter? Se ci sono messaggi lì, dovresti essere in grado di vedere i motivi per cui l'elaborazione dei messaggi fallisce. – mert
Nel DL hanno appena timeout. Programmaticamente il processo si è appena fermato. – VulgarBinary