Общественный транспорт отменяет работу потребителя при выключении или перезапуске модуляC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Общественный транспорт отменяет работу потребителя при выключении или перезапуске модуля

Сообщение Гость »


У меня возникла следующая проблема с общественным транспортом в приложении .Net.

У меня есть класс, который реализует интерфейс IConsumer и получает сообщения из очереди RabbitMQ. Приложение работает как модуль в кластере Kubernetes и может масштабироваться по горизонтали, поэтому при необходимости мы можем запускать несколько экземпляров приложения одновременно.

Я также внедряю сервис с помощью:

builder.Services.AddMassTransit() где я настраиваю Потребителя, Хост RabbitMQ и конечную точку получения.

Когда модуль выключается/перезапускается по какой-либо причине и поскольку существует фактическая задержка с момента получения сигнала SIGTERM модуля до момента его полного выключения, я хочу иметь возможность:
[*]уведомить метод, который я вызываю от потребителя, об отмене задачи; [*]не дать всем остальным потребителям, которые только что начали обработку сообщения, вызывать этот метод;
Вот что у меня есть сейчас, что не работает главным образом потому, что токен отмены из контекста не меняет состояния:

public async Task Consume (контекст ConsumeContext) { пытаться { если (context.CancellationToken.IsCancellationRequested) { выбросить новое OperationCanceledException(); } // метод вызова, который также получает токен отмены } поймать (Исключение ex) когда (например, OperationCanceledException || ex — TaskCanceledException) { // записываем это бросать; } } Пожалуйста, дайте мне знать, если у вас есть идеи, как мне добиться такого поведения. Спасибо!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»