on a side note, you should reuse the ProducerTemplate in your processors
across subsequent requests...

minimize calls to "context.createProducerTemplate()" by using a static/class
level variable to hold this reference, should help performance...



WPk wrote
> public class ScanningServicesProcessor implements Processor {
>  
>         private static GlobalLogger log =
> GlobalLogger.getLogger(ScanningServicesProcessor.class.getName());
>     private LoadServicesHandler loadServicesHandler ;
>           
>     @Autowired
>         public ScanningServicesProcessor (LoadServicesHandler loadHandler)
> {
>                 this.loadServicesHandler = loadHandler;
>         }
>         /**
>         * 
>         * This method overrides the org.apache.camel.Processor.process
> method.
>         * Consumes the HTTP based requests coming from the Captiva Service
> and
>         * start processing in the method.
>         * 
>         * @param loadExchange
>         *            - The Exchange object. Returns 200 - OK - When the
> processing
>         *            is completed with no errors. Returns 444 - No Content
> - When
>         *            the Freight Management - Load Details returns 404.
> Returns 500
>         *            - Internal Server Error - When any internal exception
> is
>         *            encountered. Returns 400 - Bad Request if the input
> loadId is
>         *            bad (Null, Empty or non-integer value).
>         */
>         @Override
>         public void process(Exchange loadExchange) {
>  
>                 final CamelContext context = loadExchange.getContext();
>                 final ProducerTemplate template =
> context.createProducerTemplate();
>                 int freightResponseCode = 0;
>                 Message loadMsgOut = null;
>                 final String loadId = (String)
> loadExchange.getIn().getHeader("loadId");
>                 Map<String, Object> headersMap = new
> HashMap<String, Object>();
>  
>                 /** Start processing for a valid loadId **/
>                 if (null != loadId && !"".equals(loadId) &&
> loadId.matches("[0-9]+")) {
>                         FetchLoadStopResponse fetchLoadStopResponse =
> null;
>  
>                         log.debug("Started invoking the Load Details
> Service in the Freight Management Module for the Load Id: "
>                                         + loadId);
>                         Map<String, Object> loadHeader = new
> HashMap<String, Object>();
>                         loadHeader.put(Exchange.HTTP_PATH, loadId);
>                         Exchange exchange = ScanningServicesUtils
>                                         .invokeCamelHTTPService(
>                                                         template,
>                                                        
> ScanningServicesCommonConstants.FREIGHT_LOAD_SVCS_URL_PROPERTY,
>                                                         loadHeader, null);
>                         loadMsgOut = (null != exchange) ?
> exchange.getOut() : null;
>                         InputSource loadMsgSource = null != loadMsgOut ?
> loadMsgOut
>                                         .getBody(InputSource.class) :
> null;
>                         freightResponseCode = (null != loadMsgOut && null
> != loadMsgSource) ? (loadMsgOut
>                                        
> .getHeader(Exchange.HTTP_RESPONSE_CODE, Integer.class)) : 0;
>                         log.debug("Load Details Service in the Freight
> Management Module for the Load Id: "
>                                         + loadId
>                                         + " returned a response code "
>                                         + freightResponseCode);
>  
>                         /** Process the Load Details if the response code
> is 200 **/
>                         try {
>                                 if (freightResponseCode ==
> ScanningServicesCommonConstants.HTTP_STATUS_SUCCESS) {
>                                         log.debug("Load Details Service in
> the Freight Management Module for the Load Id: "
>                                                         + loadId + "
> returned" + loadMsgSource.toString());
>                                         fetchLoadStopResponse =
> loadServicesHandler
>                                                        
> .processPickUpStops(context, loadMsgSource);
>  
>                                 }
>                                 /**
>                                 * Set the Message Out Body from the
> Scanning Services Web
>                                 * Service
>                                 **/
>                                 if (null != fetchLoadStopResponse
>                                                 &&
> fetchLoadStopResponse.getLoadStops().size() > 0) {
>                                         headersMap
>                                                        
> .put(Exchange.HTTP_RESPONSE_CODE,
>                                                                        
> ScanningServicesCommonConstants.HTTP_STATUS_SUCCESS);
>                                        
> ScanningServicesUtils.setExchangeBodyAndHeaders(
>                                                         loadExchange,
> ScanningServicesUtils.marshal(
>                                                                        
> fetchLoadStopResponse,
>                                                                        
> FetchLoadStopResponse.class), headersMap);
>  
>                                 } else if (null == fetchLoadStopResponse
>                                                 && (freightResponseCode ==
> ScanningServicesCommonConstants.HTTP_STATUS_PAGE_NOT_FOUND
>                                                                 ||
> freightResponseCode == 0 || freightResponseCode ==
> ScanningServicesCommonConstants.HTTP_STATUS_INTERNAL_SERVER_ERROR)) {
>                                         String error = (null != exchange
> && null != exchange
>                                                         .getException()) ?
> exchange.getException()
>                                                         .getMessage() :
> "";
>                                         log.error("Invoke of the service
> returned a response code."
>                                                         +
> freightResponseCode);
>                                         log.error("Invoke of the service
> failed." + error);
>                                         headersMap
>                                                        
> .put(Exchange.HTTP_RESPONSE_CODE,
>                                                                        
> ScanningServicesCommonConstants.HTTP_STATUS_PAGE_NOT_FOUND);
>                                         ScanningServicesUtils
>                                                        
> .setExchangeBodyAndHeaders(
>                                                                        
> loadExchange,
>                                                                        
> ScanningServicesCommonConstants.HTTP_RESPONSE_PAGE_NOT_FOUND,
>                                                                        
> headersMap);
>                                 } else {
>                                         String error = (null != exchange
> && null != exchange
>                                                         .getException()) ?
> exchange.getException()
>                                                         .getMessage() :
> "";
>                                         log.debug("Invoke of the service
> returned a response code."
>                                                         +
> freightResponseCode);
>                                         if("" != error) {
>                                            log.error("Invoke of the
> service returned" + error);
>                                         }
>                                         headersMap
>                                                        
> .put(Exchange.HTTP_RESPONSE_CODE,
>                                                                        
> ScanningServicesCommonConstants.HTTP_STATUS_NO_RESPONSE);
>                                         ScanningServicesUtils
>                                                        
> .setExchangeBodyAndHeaders(
>                                                                        
> loadExchange,
>                                                                        
> ScanningServicesCommonConstants.HTTP_RESPONSE_NO_RESPONSE,
>                                                                        
> headersMap);
>                                         
>                                 }
>  
>                         }  catch (Exception e) {
>                                 headersMap
>                                                
> .put(Exchange.HTTP_RESPONSE_CODE,
>                                                                
> ScanningServicesCommonConstants.HTTP_STATUS_INTERNAL_SERVER_ERROR);
>                                 ScanningServicesUtils
>                                                
> .setExchangeBodyAndHeaders(
>                                                                
> loadExchange,
>                                                                
> ScanningServicesCommonConstants.HTTP_RESPONSE_INTERNAL_SERVER_ERROR,
>                                                                
> headersMap);
>                                 log.error("Exception occured while
> fetching the details for the load"
>                                                 + e.getMessage());
>                         }
>  
>                 } else {
>                         log.error("The request to Scanning Services could
> not be fulfilled due to bad"
>                                         + " request.");
>                         headersMap.put(Exchange.HTTP_RESPONSE_CODE,
>                                        
> ScanningServicesCommonConstants.HTTP_STATUS_BAD_REQUEST);
>                        
> ScanningServicesUtils.setExchangeBodyAndHeaders(loadExchange,
>                                        
> ScanningServicesCommonConstants.HTTP_RESPONSE_BAD_REQUEST,
>                                         headersMap);
>  
>                 }
>  
>                 log.debug("Exit the ScanningServicesProcessor");
>         }
> }





-----
Ben O'Day
IT Consultant -http://consulting-notes.com

--
View this message in context: 
http://camel.465427.n5.nabble.com/Camel-Jetty-Performance-Issue-tp5733133p5733737.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to