Camel RaabitMQ-Bestätigung
Ich verwende Camel für meine Messaging-Anwendung. In meinem Anwendungsfall habe ich einen Produzenten (hier RabbitMQ) und der Consumer ist eine Bohne.
from("rabbitmq://127.0.0.1:5672/exDemo?queue=testQueue&username=guest&password=guest&autoAck=false&durable=true&exchangeType=direct&autoDelete=false")
.throttle(100).timePeriodMillis(10000)
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
MyCustomConsumer.consume(exchange.getIn().getBody())
}
});
Wenn autoAck falsch ist, wird anscheinend eine Bestätigung gesendet, wenn die Ausführung von process () abgeschlossen ist (bitte korrigieren Sie mich, wenn ich hier falsch liege).
Jetzt möchte ich nicht bestätigen, wann die Ausführung von process () abgeschlossen ist. Ich möchte dies zu einem späteren Zeitpunkt tun. Ich habe einBlockingQueue
in meinem MyCustomConsumer, in dem consume () Nachrichten ablegt, und MyCustomConsumer hat einen anderen Mechanismus, um sie zu verarbeiten. Ich möchte eine Nachricht nur dann bestätigen, wenn MyCustomConsumer die Verarbeitung der Nachrichten von beendet hatBlockingQueue
. Wie kann ich das erreichen?