У меня есть _ 1_ аннотированный метод, для которого Spring AMQP блокируется после возврата из метода. Базовая ссылка _ 2_ использует _ 3_. Я пока не хочу подтверждать сообщение в методе слушателя.
Есть ли способ избежать блока Spring AMQP в таком сценарии?
Более подробно
Я использую такой слушатель:
@RabbitListener(queues = "#{ @myQueue }")
void recordRequestsFromMyMessages(
@Payload MyMessage myMessagePayload,
@Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag,
Channel channel) {
// record relevant parts of the given message and combine them with
// parts from previous/future messages
// DON'T acknowledge the consumed message, yet; instead only keep a
// record of the channel and the delivery tag
}
Поскольку я группирую / объединяю несколько сообщений до того, как фактически обработаю их (асинхронно) позже, я не хочу сразу подтверждать полученное сообщение. Вместо этого я хочу сделать это только после того, как сообщения будут успешно обработаны позже.
При моем текущем подходе Spring AMQP блокируется после возврата из вызова метода recordRequestsFromMyMessages
, описанного выше, и никакие дальнейшие сообщения больше не потребляются из той же очереди.
Этот ответ SO предполагает, что пакетная обработка должна работать, однако я не знаю, как это сделать.