spring amqp ConfirmCallback CorrelationData иногда имеет значение null

Я включаю подтверждение публикации и вызываю метод отправки RabbitTemplate с CorrelationData. Но когда я получаю CorrelationData в ConfirmCallback, иногда CorrelationData имеет значение null, а подтверждение — true. Я должен добавить суждение Correlation!=null.

Это нормальное поведение в spring amqp?


person GrapeBaBa    schedule 29.10.2015    source источник


Ответы (1)


Если вы настроите RabbitTemplate для поддержки подтверждений, вы должны предоставить данные корреляции.

Если вы вызываете метод send без параметра данных корреляции или с аргументом null, вы получите null в обратном вызове.

Намерение состоит в том, что если вам нужны подтверждения, вам необходимо предоставить данные корреляции для каждой отправки (чтобы вы могли определить, для какой отправки требуется подтверждение).

person Gary Russell    schedule 29.10.2015
comment
каждая отправка имеет корреляционные данные, а не нуль, но иногда получает нуль, кажется, подтверждение обратного вызова вызывается больше раз, чем отправка - person GrapeBaBa; 29.10.2015
comment
Какая версия Spring AMQP? В этой области было несколько исправлений (хотя конкретно это я не помню). Текущая версия — 1.5.1.RELEASE. Если вы все еще видите проблемы с этой версией, откройте задачу JIRA. - person Gary Russell; 29.10.2015
comment
Пожалуйста, убедитесь, что вы точно предоставили данные корреляции, и прикрепите журнал отладки, который показывает проблему, к проблеме JIRA. - person Gary Russell; 29.10.2015
comment
Кроме того, было бы здорово иметь какой-нибудь простой тестовый пример, чтобы воспроизвести или хотя бы поиграть. - person Artem Bilan; 29.10.2015
comment
У нас есть стресс-тест для этой функциональности — я просто исправил тест, чтобы еще больше нагрузить его (100 тыс. сообщений в 100 потоках) и обнаружить дополнительные подтверждения и/или нулевые значения, и он проходит нормально . Возможно, вы видите это при каком-то ненормальном состоянии? - person Gary Russell; 29.10.2015
comment
извините, это моя ошибка. я использую тот же шаблон rabbittemplate для фиктивного потребителя и не отправляю данные корреляции - person GrapeBaBa; 30.10.2015