Тайм-аут видимости RabbitMQ

Есть ли в очередях RabbitMQ AWS SQS-like - "тайм-аут видимости сообщения"?

Из документации AWS SQS:

"Часы тайм-аута видимости начинают тикать, когда Amazon SQS возвращает сообщение. В течение этого времени компонент обрабатывает и удаляет сообщение. Но что произойдет, если компонент не удастся выполнить до удаления сообщения? Если ваша система не вызывает DeleteMessage для этого сообщения раньше истекает время ожидания видимости, сообщение снова становится видимым для вызовов ReceiveMessage, сделанных компонентами в вашей системе, и оно будет получено снова "

Спасибо!

3 ответа

Решение

Я полагаю, что вы ищете ручную функцию подтверждения RabbitMQ. Эта функция позволяет вам получать сообщения из очереди и, как только вы их получили, их подтвердили. Если что-то произойдет в середине этого процесса, сообщение будет снова доступно в очереди через определенное время. Кроме того, в то же время, поскольку вы получаете сообщение до тех пор, пока не получите его, оно не будет доступно для других потребителей.

Я думаю, что это то же самое поведение, что и Тайм-аут видимости сообщений в SQS.

Нет никаких таймаутов сообщений; RabbitMQ будет повторно доставлять сообщение, только когда рабочее соединение прекратит работу. Это нормально, даже если обработка сообщения занимает очень и очень много времени. Тайм-ауты сообщения отсутствуют; RabbitMQ будет повторно доставлять сообщение, только когда рабочее соединение прекратит работу. Это хорошо, даже если обработка сообщения занимает очень и очень много времени.

Я полагаю, что ответ можно найти при обсуждении MQ против SQS, как правило, это считается особенностью MQ (то, что он может обрабатывать медленных потребителей), но использование политики назначения "slowConsumerStrategy" с "abortSlowConsumerStrategy" может решить вашу проблему. Более подробное объяснение можно найти в документации Redhat MQ, и я предположил, что мы должны надеяться, что rabbitMQ и AmazonMQ обе поддерживают эту стратегию.

Другие вопросы по тегам