Похоже, PostgreSQL не гарантирует эксклюзивного чтения с транзакциями и LIMIT 1 FOR UPDATE
.
В любом случае, WARN - это просто примечание, что какой-то другой процесс удалил сообщение. Ничто не дублируется, если другой процесс похож на этот опросчик:
public Message<?> pollMessageFromGroup(Object groupId) {
final String key = getKey(groupId);
final Message<?> polledMessage = this.doPollForMessage(key);
if (polledMessage != null) {
if (!this.doRemoveMessageFromGroup(groupId, polledMessage)) {
return null;
}
}
return polledMessage;
}
Вы видите, что если сообщение не было удалено, мы возвращаем null
, поэтому на данный момент ничего не запрашиваем.
Вы можете отключите уровень предупреждения для org.springframework.integration.jdbc.store.JdbcChannelMessageStore
, чтобы в этом сообщении не указывалось значение категории как ERROR
в конфигурации журнала.