rabbitmq AlreadyClosedException в Masstransit 6.2.3 - PullRequest
0 голосов
/ 26 марта 2020

Я использую rabbitmq для создания шины.

После обновления с 6.2.2 до 6.2.3 я получаю исключение AlreadyClosedException в моей саге. Похоже, это относится к повторной доставке сообщений, так как, когда я отключаю повторную доставку, эти исключения go прочь.

Конфигурация повторной доставки

rec.UseScheduledRedelivery(r =>
            {
                r.Handle<Exception>(IsTransientException);
                r.Ignore<Exception>(IsHarmlessException);
                r.Intervals(TimeSpan.FromSeconds(FirstRedeliveryIntervalInSeconds),
                    TimeSpan.FromSeconds(SecondRedeliveryIntervalInSeconds),
                    TimeSpan.FromSeconds(ThirdRedeliveryIntervalInSeconds));
            });

Трассировка ошибки:

RabbitMQ.Client.Exceptions.AlreadyClosedException: Уже закрыто: операция AMQP была прервана: причина закрытия AMQP, инициированная Peer, код = 406, текст = 'PRECONDITION_FAILED - недопустимое истечение срока действия' -34318 ': { value_negative, -34318} ', classId = 60, methodId = 40 в RabbitMQ.Client.Impl.SessionBase.Transmit (Command cmd) в RabbitMQ.Client.Impl.ModelBase.TransmitAndEnqueue (команда cmd, IRpcContinuation k в Rab). Impl.ModelBase. , Логическое значение nowait, IDictionary 2 arguments) at RabbitMQ.Client.Impl.ModelBase.ExchangeDeclare(String exchange, String type, Boolean durable, Boolean autoDelete, IDictionary 2 аргумента) в MassTransit.RabbitMqTransport.Contexts.RabbitMqModelContext. <> C__DisplayClass16_0.b __0 () в System.Threading.Tasks.Task.InnerInvoke () в System.Threading.ExecutionContext.RunInternal (ExecutionContext creationContext, обратный вызов ContextCallback, состояние объекта) --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в System.Threading.Tasks.Task.ExecuteWithThreadLocal (Task & currentTaskSlot, Thread threadPoolThread) --- Конец трассировки стека из предыдущего расположения, в котором было сгенерировано исключение --- в MassTransit.RabbitMqTransport.Pipeline.ConfigureTopologyFilter 1.ConfigureTopology(ModelContext context) at MassTransit.RabbitMqTransport.Pipeline.ConfigureTopologyFilter 1. <класс c_Display . <- Send> b__0> d.MoveNext () --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --- в GreenPipes.PipeExtensions.OneTimeSetup [T] (контекст PipeContext, Fun c2 setupMethod, PayloadFactory 1 payloadFactory) в MassTransit.RabbitMqTransport.Pipeline.ConfigureTopologyFilter 1.GreenPipes.IFilter<MassTransit.RabbitMqTransport.ModelContext>.Send(ModelContext context, IPipe 1 следующий) в MassTransit.RabbitMqTransport.Transport.RabbitMqMoveTransport.Move (контекст ReceiveContext, действие 2 preSend) at MassTransit.Pipeline.Filters.ErrorTransportFilter.GreenPipes.IFilter<MassTransit.ExceptionReceiveContext>.Send(ExceptionReceiveContext context, IPipe 1 следующий) в MassTransitFile.Filter.FilterFile.File.File.File.File.File.File.File.File.GF Отправить (Excep контекст ‑ReceptContext, IPipe 1 next) at GreenPipes.Filters.RescueFilter 2.GreenPipes.IFilter.Send (контекст TContext, IPipe 1 next) at MassTransit.Pipeline.Filters.DeadLetterFilter.GreenPipes.IFilter<MassTransit.ReceiveContext>.Send(ReceiveContext context, IPipe 1 следующий) в MassTransit.Transports.ReceivePipeDispatcher.Dispatch (контекст ReceiveContext, ReceiveLockContext receiveLock) в MassTransit.Transports.ReceptPort context, ReceiveLockContext receiveLock) в MassTransit.Transports.ReceivePipeDispatcher.Dispatch (контекст ReceiveContext, ReceiveLockContext receiveLock) в MassTransit.RabbitMqTransport.Pipeline.RabbitMqBasicConsumer. <> c__DisplayClass12_0. d.MoveNext ()

Также:

---> MassTransit.RabbitMqTransport.MessageNotConfirmedException: rabbitmq: // mq / scheduler => Сообщение не подтверждено: PRECONDITION_FAILED - недопустимый срок истечения '-34318': {value_negative, -34318} в MassTransit.RabbitMqTransport.Contexts.RabbitMqModelContext.MassTransit.RabbitMqTransport.ModelContext.BasicPublishAsyning тело, логическое значение awaitAck) в MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe 1.Send(ModelContext modelContext) at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe 1.Send (ModelContext modelContext) в GreenPipes.Agents.PentsContextSupervisor 1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe 1 pipe.ТенгентПункты) труба, CancellationToken cancellationToken) в GreenPipes.Agents.PipeContextSupervisor 1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe 1 труба, CancellationToken cancellationToken) в MassTransit.Scheduling.EndpointScheduleMessageProvider.ScheduleSend [T] (ScheduleMessage 1 message, IPipe 1 труба, CancellationToken) («CancellationToken») в MassTransit.Scheduling.BaseScheduleMessageProvider.MassTransit.Scheduling.IScheduleMessageProvider. ScheduleSend [T] (URI destinationAddress, DateTime scheduleTime, Task 1 message, IPipe 1 pipe, CancellationToken cancellationToken) в MassTransit.Pipeline.Filters.RedeliveryRetryFilter 2.Send(TContext context, IPipe 1 следующий) --- Конец внутренней трассировки стека исключений ---

...