у меня есть случай использования, где я повторно сообщение в очередь с обновленными свойствами, сообщения становятся снова очередь, но свойства сообщений не получают обновленныеснова поставить Весна AMQP сообщение с обновленными свойствами
public class TestListener implements MessageListener{
@Override
public void onMessage(Message arg0) {
MessageProperties properties = arg0.getMessageProperties();
int count = properties.getMessageCount();
System.out.println(count);
properties.setMessageCount(++count);
throw new AmqpException("test");
}
Но Значение count всегда выводит его всегда как 0
добавление пользовательских свойств в заголовок dosn't help, поскольку мы получаем одно и то же значение. У меня есть случай использования, когда нам необходимо, чтобы REQ сообщение п не раз, основываясь на состоянии некоторого API называют то общественного класса TestListener реализует MessageListener { @Override общественного недействительными OnMessage (arg0 Message) { Byte [] обр = arg0.getBody(); String someValue = new String (arr); // вызывать некоторый вызов API, если не удастся повторить сообщение (эта логика должна быть проверена несколько раз) else переместить вперед – Akshat
Как я уже сказал, вы не можете изменять сообщение, отклоняя его, вы должны его повторно опубликовать. Свойство 'messageCount' является специальным свойством только для чтения. При использовании методов RabbitTemplate.receive() 'это оценка количества сообщений в очереди. Он не заполняется для прослушивателей сообщений. Вам нужно использовать настраиваемый заголовок, и вам нужно переиздать сообщение самостоятельно, вы не можете просто отказаться от него (если вы хотите его изменить). –