일부로드 테스트를 수행하기 위해 Spring과 JMS 연결 캐싱 및 소비자 동시성을 구성하려고합니다. 응용 프로그램 컨텍스트 xml은 아래와 같습니다. 3.0 CXF 문서에 따라 Apache CXF-JMS 3.0 및 Spring 구성
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:cxf="http://cxf.apache.org/core"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<context:annotation-config />
<bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://172.18.2.100:8080"/>
</bean>
<bean id="clientCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="amqConnectionFactory"/>
<property name="sessionCacheSize" value="20"/>
<property name="cacheProducers" value="true"/>
</bean>
<bean id="clientContainerListener" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="clientCachingConnectionFactory" />
<property name="destinationName" value="test.load.outside.multispeak.ch.queue" />
</bean>
<jaxws:client
id="load-test-multispeak-ch-client"
xmlns:ns="http://www.multispeak.org/Version_4.1_Release"
serviceClass="org.multispeak.version_4_1_6.CH.CHServerSoap"
serviceName="ns:CH_Server"
endpointName="ns:CH_ServerSoap"
address="jms://"
wsdlLocation="classpath:CH_Server.wsdl">
<jaxws:features>
<bean class="org.apache.cxf.transport.jms.ConnectionFactoryFeature">
<constructor-arg index="0" ref="clientCachingConnectionFactory"/>
</bean>
</jaxws:features>
</jaxws:client>
<bean id="serverCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="amqConnectionFactory"/>
<property name="sessionCacheSize" value="20"/>
<property name="cacheConsumers" value="true"/>
</bean>
<bean id="serverContainerListener" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="serverCachingConnectionFactory" />
<property name="destinationName" value="test.load.outside.multispeak.ch.queue" />
<property name="cacheLevel" value="3" />
<property name="concurrentConsumers" value="10" />
<property name="maxConcurrentConsumers" value="50" />
</bean>
<jaxws:endpoint
id="load-test-multispeak-ch-server"
xmlns:tns="http://www.multispeak.org/Version_4.1_Release"
implementor="pt.fraunhofer.outside.multispeak.ch.server.CHServerSoapImpl"
serviceName="tns:CH_Server"
endpointName="tns:CH_ServerSoap"
publish="false"
address="jms://"
wsdlLocation="classpath:CH_Server.wsdl">
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature"/>
<bean class="org.apache.cxf.transport.jms.ConnectionFactoryFeature">
<constructor-arg index="0" ref="serverCachingConnectionFactory"/>
</bean>
</jaxws:features>
</jaxws:endpoint>
가하는
ConnectionFactoryFeature
대신되지 않은
JMSConfigFeature
(
http://cxf.apache.org/docs/jms-transport.html)로 사용되어야한다. 나는
http://cxf.apache.org/scalable-cxf-applications-using-jms-transport.html에 제공된 예제를 따르고 있었지만 3.0에서
JMSConfiguration
클래스의 캐싱 또는 동시성 기능 (setter/getters 없음)이 없으므로 3.0 이전의 CXF 버전을 참조하는 것으로 보입니다. 그래서, 나는 같은 결과를 얻기 위해 Spring을 사용하려했지만 성공하지 못했습니다. 매우 동일한 문서는 캐싱 및 동시성 구성을위한 컨테이너로서 Spring
DefaultMessageListenerContainer
을 참조하지만 CXF 통합으로 순수 JMS에 대한 예제를 찾을 수 없었다. 또한
DefaultMessageListenerContainer
에는 JMS
MessageListener
을 등록하는 설정자가 있습니다. CXF의 경우 CXF 런타임에서 리스너를 만들고 관리하며 응용 프로그램에서 제공하지는 않습니다.
어떤 조언이 필요합니까?
감사합니다.
이 문제를 해결 했습니까? – Eernie
이 게시물을보십시오 : http://stackoverflow.com/questions/27869370/apache-cxf-3-jms-support-for-multiple-concurrent-consumers/ – acostalima