ВАЖНО onException shareUnitOfWork Apache Camel

Я не могу использовать единицу работы при использовании onException. Мне действительно нужно использовать многоадресную рассылку и сплиттер. Я пробовал до сих пор, например, useOriginalMessage и т. Д., Не смог.

   onException(Exception.class)
            .handled(Boolean.TRUE)
            .process(XXX)
            .marshal()
            .jacksonxml()
            .convertBodyTo(String.class)
            .removeHeader(XXXX)
            .end();



   from(RouteDefinition.XXX)
            .id("XXX")
            .unmarshal().jacksonxml(XXX.class)
            .to("bean-validator://x")
            .setHeader(XXXS, constant(XXX.class))
            .setProperty(ApplicationParam.REQUEST_BODY, body())
            .bean(xxxx, "XXX")
            .setHeader(Exchange.HTTP_METHOD, constant(HttpMethod.POST))
            .setHeader(Exchange.CONTENT_TYPE, constant(MediaType.APPLICATION_JSON))
            .setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, constant(XXX.class))
            .to(restUri(jaxrsEndpoint, uri))
            .removeHeader(Header.HEADER_LIST)
            .bean(xxxx, "responseBeanXX")
            .marshal().jacksonxml(); 

Ход процесса; Apache CXF -> JAXRS-> Исключение -> OnException -> Процессор -> Тело ответа

2 ответа

Если вы просто хотите использовать ведение журнала MDC в Camel, вы можете активировать его с помощью camelContext.setUseMDCLogging(true);

Я не знаю, поддерживается ли это в Camel 3.x, так как связанная страница документации больше не существует в официальных документах Camel.

Если вы хотите использовать UnitOfWork в своих Camel Routes, посетите эту страницу

   DefaultErrorHandlerBuilder defaultErrorHandlerBuilder = new DefaultErrorHandlerBuilder();
    defaultErrorHandlerBuilder.setOnExceptionOccurred(new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
            CustomUnitOfFactory customUnitOfFactory = new CustomUnitOfFactory ();
            customUnitOfFactory .afterPropertiesConfigured(camelContext);
            customUnitOfFactory .createUnitOfWork(exchange);
        }
    });
    errorHandler(defaultErrorHandlerBuilder);

@burki Я решил проблему с кодом, который выше.

Другие вопросы по тегам