Повторно опубликовать сообщение в той же очереди в MassTransit.C#

Место общения программистов C#
Ответить
Anonymous
 Повторно опубликовать сообщение в той же очереди в MassTransit.

Сообщение Anonymous »

Я использую Masstransit 8 + amazon sqs/sns, приложение работает в контейнере Windows Docker.
Мой потребитель обрабатывает сообщение в запланированное время, которое может занять до нескольких часов. Из-за ограничения sqs максимальная задержка до того, как сообщение станет невидимым для потребителей, составляет 15 минут, поэтому сообщение может попасть в очередь раньше запланированного времени, и чтобы дождаться требуемого времени, я повторно публикую это сообщение в той же очереди.Мои вопросы:

[*]Может ли такой подход привести к дублированию сообщений в очереди?
[*]Так ли это? это плохая практика или не публиковать повторно одно и то же сообщение в той же очереди?
[*]Есть ли какие-либо другие побочные эффекты, которые я мог бы ожидать при использовании этого подхода?

Пример кода показан ниже:
internal class TestConsumer : IConsumer
{
public async Task Consume(ConsumeContext context)
{
var message = context.Message;

// due to sqs limitation message could be automatically consumed earlier than scheduled polling time.
// in this case we re-publish the same message and wait until the scheduled time.
if (DateTime.UtcNow < message.ScheduledTime)
{
var uri = context.ReceiveContext.InputAddress;

await context.ScheduleSend(uri, message.ScheduledTime, message).ConfigureAwait(false);

return;
}

// process business logic here
}
}

public class TestEvent
{
public DateTime ScheduledTime { get; set; }
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... asstransit
Ответить

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

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

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

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

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