Я использую режим DUPS_OK_ACKNOWLEDGE при использовании сообщений из очереди, мне нужно обнаружить дубликаты и игнорировать их.
.from(Jms.messageDrivenChannelAdapter(activeMQConnectionFactory)
.destination(sourceQueue)
.configureListenerContainer(spec -> {
spec.sessionTransacted(false);
spec.sessionAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE);
}))
.transform(orderTransformer)
.handle(orderService, "save")
.get();
У меня есть совет идемпотентного приемника.
@Bean
public IdempotentReceiverInterceptor idempotentReceiverInterceptor() {
IdempotentReceiverInterceptor idempotentReceiverInterceptor = new IdempotentReceiverInterceptor(new MetadataStoreSelector(m ->
(String) m.getHeaders().get("JMSMessageId")));
idempotentReceiverInterceptor.setDiscardChannelName("ignoreDuplicates");
idempotentReceiverInterceptor.setThrowExceptionOnRejection(false);
return idempotentReceiverInterceptor;
}
Я застрял с двумя вещами
- Как мне настроить / вызвать этот совет в Jms.messageDrivenChannelAdapter?
- Если мне нужно хранилище метаданныхчтобы быть в oracle / mysql, как таблица выглядит как пример ссылки