Раньше я читал все сообщения, присутствующие в очереди, но теперь мне нужно вернуть определенное количество сообщений на основе выбора (количества) пользователей.Сообщения в ручном режиме в RabbitMQ
Я пытаюсь изменить цикл for соответственно, но его чтение всего сообщения из-за автоматического подтверждения. Поэтому я попытался изменить его на ручной в файле конфигурации.
В моей программе как ack сообщение вручную после прочтения msg (в настоящее время я использую AmqpTemplate для приема, и у меня нет ссылки на канал)?
Properties properties = admin.getQueueProperties("queue_name");
if(null != properties)
{
Integer messageCount = Integer.parseInt(properties.get("QUEUE_MESSAGE_COUNT").toString());
while(messageCount > 0)
{
Message msg = amqpTemplate.receive(queue_name);
String value = new String(msg.getBody());
valueList.add(value);
messageCount--;
}
}
Любая помощь очень заметна, спасибо заранее.
'AmqpTemplate # receive' autoack сообщение, если только канал транслируется. Чтобы контролировать подтверждение, вы можете использовать 'AmqpTemplate # execute' и делать вручную, или лучше всего использовать« SimpleMessageListenerContainer »или даже« BlockingQueueConsumer » –
@NicolasLabrot. Я не нашел метод execute в AmqpTemplate, ссылаетесь ли вы на к чему-то другому. Да, я установил setAcknowledgeMode в MANUAL в SimpleMessageListenerContainer. – lambodar
Извините, я имею в виду 'RabbitTemplate # execute', который является реализацией' AmqpTemplate' –