首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-JMS(Websphere MQ)

Spring-JMS(Websphere MQ)
EN

Stack Overflow用户
提问于 2012-09-03 15:22:59
回答 1查看 14.6K关注 0票数 2

我在Spring中有以下配置,它工作得很好,但性能太低( 20条消息需要1分钟)。你能给我提个建议来提高性能吗?

代码语言:javascript
复制
<bean id="jmsConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
        <property name="transportType"><value>1</value></property> 
        <property name="queueManager"><value></value></property> 
        <property name="hostName"><value></value></property> 
        <property name="port"><value></value></property> 
        <property name="channel"><value></value></property> 
        <property name="clientId"><value></value></property>        
    </bean>
        <bean id="SenderJMSTemplate" class="org.springframework.jms.core.JmsTemplate"> 
        <property name="connectionFactory"><ref bean="jmsConnectionFactory" />  </property> 
        <property name="pubSubDomain"><value>false</value></property> 
        <property name="defaultDestination"><ref bean="senderQueue" /></property> 
    </bean>  
<bean id="senderQueue" class="com.ibm.mq.jms.MQQueue"> 
        <constructor-arg value="TEST" /> 
        <property name="baseQueueManagerName"><value>tree.queue.manager</value></property> 
        <property name="baseQueueName"><value>ORANGE.QUEUE</value></property>  
    </bean> 
    <bean id="jmsSender" class="org.tree.jms.spring.JMSSender"> 
        <property name="jmsTemplate"><ref bean="SenderJMSTemplate"/></property>     
    </bean>

我从春天打电话给你

代码语言:javascript
复制
JMSSender obj = (JMSSender) context.getBean("jmsSender");

我的发送者程序是:

代码语言:javascript
复制
        @Cacheable("message")

     public void sendMesage() {

        jmsTemplate.send(new MessageCreator() {
        public Message createMessage(Session session)throws JMSException {
        message = (Message) session.createTextMessage(stringBuffer.toString());
        return message;
        }
        });

    }
}
EN

回答 1

Stack Overflow用户

发布于 2012-09-07 20:23:24

当使用JMSTemplate从JavaEE容器中发送消息时,一个常见的问题是它非常慢,因为它为每个消息获取一个新的连接(然后关闭它)。你可能需要一个池化/缓存的连接来提高速度。

请阅读本文,它是为ActiveMQ编写的,但以类似于WebSphere MQ的方式应用:http://activemq.apache.org/jmstemplate-gotchas.html

您可以使用如下代码在spring中设置缓存连接工厂:

代码语言:javascript
复制
<bean id="cachedConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory"
p:targetConnectionFactory-ref="jmsConnectionFactory"
p:sessionCacheSize="10" />

然后为JMS连接使用它,而不是原始的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12243574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档