gpt4 book ai didi

java - Apache CXF-JMS 3.0 和 Spring 配置

转载 作者:行者123 更新时间:2023-11-29 08:46:53 25 4
gpt4 key购买 nike

我正在尝试使用 Spring 配置 JMS 连接缓存和消费者并发以执行一些负载测试。应用程序上下文 xml 如下。

<?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>

根据 CXF 文档,从 3.0 开始,应该使用 ConnectionFactoryFeature 而不是 JMSConfigFeature,后者已弃用 (http://cxf.apache.org/docs/jms-transport.html)。我正在按照 http://cxf.apache.org/scalable-cxf-applications-using-jms-transport.html 提供的示例进行操作,但那里的文档似乎指的是 3.0 之前的 CXF 版本,因为 3.0 中的 JMSConfiguration 类没有缓存或并发能力(没有 setters/getters)。所以,我试图使用 Spring 来实现相同的结果,但没有成功。完全相同的文档将 Spring DefaultMessageListenerContainer 称为缓存和并发配置的容器,但我无法找到与 CXF 集成的示例,仅适用于纯 JMS。此外,DefaultMessageListenerContainer 有一个 setter 来注册 JMS MessageListener。在 CXF 的情况下,我发现该监听器是由 CXF 运行时创建和管理的,而不是由应用程序提供的。

有什么建议吗?

谢谢!

最佳答案

目前您不能为 CXF 3 设置并发消费者。我用 ActiveMQ 做了一些性能测试,发现 CXF 3 的性能等于 CXF 2 甚至更好。

原因是我们现在使用 MessageListener 方法而不是 spring 所做的轮询。

See my website for the performance tests .

关于java - Apache CXF-JMS 3.0 和 Spring 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com