package com.megatim.apifdxweb.service.impl.camel.routes.in; import com.megatim.apifdxweb.service.impl.camel.config.CamelRouteConfiguration; import com.megatim.apifdxweb.service.impl.camel.config.LocalConfiguration; import com.megatim.apifdxweb.service.impl.camel.filters.ReferentielFilter; import com.megatim.apifdxweb.service.impl.camel.processors.ReferentielProcessor; import com.megatim.fdxcommons.model.pojo.ReferentielToImportData; import com.megatim.fdxcommons.tools.context.AppContext; import com.megatim.fdxcommons.tools.resolvers.JacksonMapperFormat; import java.util.concurrent.RejectedExecutionException; import javax.inject.Inject; import org.apache.camel.builder.RouteBuilder; /** * * @author ASUS */ public class ReferentielIntegrationLocalRoute extends RouteBuilder { @Inject private ReferentielProcessor referentielProcessor; @Override public void configure() throws Exception { LocalConfiguration localConfiguration = new CamelRouteConfiguration(com.megatim.apifdxweb.tools.AppContext.PROPERTY_FILE_PATH).getLocalConfiguration(); onException(IllegalArgumentException.class) .process(exchange -> { exchange.getException().printStackTrace(); }) .handled(true); onException(RejectedExecutionException.class) .log("Caught RejectedExecutionException: ${exception.message}") .handled(true); from(localConfiguration.referentielRouteURI()) .filter() .method(ReferentielFilter.class, "isConsumable") .process(referentielProcessor) .marshal(JacksonMapperFormat.jacksonDataFormat(ReferentielToImportData.class)) .to("rabbitmq:" + AppContext.REFERENTIEL_INTEGRATION_EXCHANGE + "?queue=" + AppContext.REFERENTIEL_INTEGRATION_QUEUE + "&routingKey=" + AppContext.REFERENTIEL_INTEGRATION_ROUTING_KEY + "&autoDelete=false"); } }