/// <inheritdoc /> public virtual void DisposeMessageHandler(IMqMessageHandler messageHandler) { lock (this._handlerMap) { if (!this._isRunning) { return; } var allHandlersAreDisposed = true; for (var i = 0; i < this._messageHandlers.Length; i++) { if (this._messageHandlers[i] == messageHandler) { this._messageHandlers[i] = null; } allHandlersAreDisposed = allHandlersAreDisposed && this._messageHandlers[i] == null; } if (allHandlersAreDisposed) { this.Stop(); } } }
public RabbitMqWorker(RabbitMqMessageFactory mqFactory, IMqMessageHandler messageHandler, string queueName, Action <RabbitMqWorker, Exception> errorHandler, bool autoConnect = true) { this._mqFactory = mqFactory; this._messageHandler = messageHandler; this.QueueName = queueName; this.ErrorHandler = errorHandler; this.AutoReconnect = autoConnect; }
private void DefaultInExceptionHandler(IMqMessageHandler mqHandler, IMqMessage <T> message, Exception ex) { this._logger.Error(ex, "Message exception handler threw an error."); var requeue = !(ex is UnRetryableMqMessagingException) && message.RetryAttempts < this._retryCount; if (requeue) { message.RetryAttempts++; this.TotalRetries++; } message.Error = new MqErrorStatus(ex); mqHandler.MqClient.Nak(message, requeue, ex); }