Постановка проблемы: у меня есть запрос (с метаданными нескольких файлов). Я настроил верблюжий маршрут согласно приведенному ниже коду.
@Override
public void configure() {
String sourceUri = getSourceUri();
String destinationUri = getDestinationUri();
onException(StopRouteException.class)
.process(new StopRouteProcessor())
.log("Stop Event processed for req id : " + reqId)
.end();
onException(Exception.class)
.process(new RouteExceptionProcessor())
.onRedelivery(new RouteRedeliveryProcessor())
.maximumRedeliveries(maxRetries)
.redeliveryDelay(retryDelay)
.handled(false)
.log("Error Occurred while moving file to path : " + destinationUri)
.end();
from(sourceUri)
.log("Transferring File from " + sourcePath + " to " + destinationUri)
.process(new PreMoveProcessor())
.to(destinationUri)
.process(new PostMoveProcessor())
.log("File Upload Success.");
}
Где-то в моем микросервисе событие "Стоп" прослушивалось бы. После этого он должен прекратить передачу всех файлов этого конкретного запроса.
В PreMoveProcessor я могу опросить это событие остановки и выдать исключение StopRouteException, которое остановит передачу этого файла. Но если в этом запросе несколько файлов, они будут переданы после этого.
Мне нужен механизм, чтобы остановить передачу файлов определенного запроса. Я не могу остановить маршрут, так как в это же время будут обрабатываться другие запросы.