Hi, I have a cxfse-su Orderservice which should send a message to an cxfbc-su CRMService. This works fine on low traffic but if on high traffic it seems that the sendSync hangs up.
So I started an JMeter load tests and I take only 3 users which cause 500 request and everything works fine but if I increase the users to > 4 it seems that the sendsync hangs up. Without the sendSync and both services testet separately the cxf OrderService and cxf CRMService works fine within 50 users performing 1000 requests. Flow: client ---> cxfbc-su OrderService --> cxfse-su OrderService ---sendSync--> cxfbc-su CRMService ---> cxfse-su CRMService --- reponse to --> cxfse-su OrderService --response to -> client CXF-BC CRMSERVICE xbean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0" xmlns:order="http://test.net/crmservice/v1/"> <!-- Loads the configuration--> <bean class="xxx.xxx.xxxx.common.util.spring.StagePropertiesPlaceholderConfigurer"/> <cxfbc:consumer wsdl="classpath:crmService.wsdl" targetService="order:CRMService" targetInterface="order:crmServicePort" timeout="${xxx.components.cxf-bc.timeout}" locationURI="${xxx.components.crm.service.soapurl}"/> </beans> The CXF OrderService send method: protected Source sendMessage(Source xmlMessage, QName serviceName, QName interfaceName, QName operationName) throws AdFusionException { ServiceMixClient client = new ServiceMixClientFacade(context); NormalizedMessage message = null; InOut exchange = null; try { exchange = client.createInOutExchange(); message = exchange.getInMessage(); message.setContent(xmlMessage); exchange.setService(serviceName); exchange.setInterfaceName(interfaceName); exchange.setOperation(operationName); // sending the message client.sendSync(exchange); } catch (MessagingException e) { StringBuilder sb = new StringBuilder(); logger.error("sendMessage() - " + sb.toString(), e); throw new AdFusionException(sb.toString(), e); } // retrieving the answer // logger.info("sendMessage() - exchange: " + exchange); // logger.info("sendMessage() - exchange.getOutMessage(): " + exchange.getOutMessage()); Source source = getContentFromMessage(exchange); try { client.done(exchange); } catch (MessagingException e) { String msg = "Error setting status of response to ExchangeStatus.DONE"; logger.error("sendMessage() - " + msg + ": " + e.getMessage()); } finally { try { client.close(); } catch (JBIException e) { String msg = "Error closing client"; logger.error("sendMessage() - " + msg + ": " + e.getMessage()); } } if (source == null) { throw new AdFusionException("Source could not be retrieved from exchange."); } return source; } private StringSource getContentFromMessage(InOut exchange) { Source source = null; if (exchange != null) { if (exchange.getFault() != null) { Fault fault = exchange.getFault(); logger.debug("getContentFromMessage() - retrieving fault: " + fault); source = fault.getContent(); } else { if (exchange.getOutMessage() != null) { NormalizedMessage message = exchange.getOutMessage(); logger.debug("getContentFromMessage() - retrieving message: " + message); source = message.getContent(); } else { logger .error("getContentFromMessage() - The CRM System did not answer, exchange.getOutMessage() and exchange.getFault() is null. Please check the CRM Log files."); AdfError adfError = errorHandler.getById(AdfErrorCode.NO_CRM_ANSWER); throw new AdFusionException(AdfErrorCode.NO_CRM_ANSWER, adfError); } } } else { logger.error("getContentFromMessage() - exchange was null"); } String resource = jbiWrapper.sourceToString(source, false, false); StringSource stringSource = new StringSource(resource); logger.debug("getContentFromMessage() - Returned source: " + resource); return stringSource; } May you can help me? Greetings Stephan -- View this message in context: http://www.nabble.com/sendSync-hangs-on-Loadtest.-tp19643829p19643829.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
