【问题标题】:Spring-JMS(Websphere MQ)Spring-JMS(Websphere MQ)
【发布时间】:2012-08-27 22:30:35
【问题描述】:

我在 Spring 中有以下配置,它工作正常但性能太低(20 条消息需要 1 分钟)。您能否建议我进行更改以提高性能。

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

我从春天打来电话

JMSSender obj = (JMSSender) context.getBean("jmsSender");

我的发件人程序是:

        @Cacheable("message")

     public void sendMesage() {

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

    }
}

【问题讨论】:

    标签: spring ibm-mq spring-jms


    【解决方案1】:

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

    阅读这篇文章,它是为 ActiveMQ 编写的,但适用于 WebSphere MQ:http://activemq.apache.org/jmstemplate-gotchas.html

    你可以在 spring 中设置一个缓存的连接工厂,使用类似这样的东西:

    <bean id="cachedConnectionFactory"
    class="org.springframework.jms.connection.CachingConnectionFactory"
    p:targetConnectionFactory-ref="jmsConnectionFactory"
    p:sessionCacheSize="10" />
    

    然后用它代替原来的 JMS 连接。

    【讨论】:

      猜你喜欢
      • 2013-01-09
      • 2016-10-31
      • 2017-02-03
      • 1970-01-01
      • 2015-06-19
      • 2017-01-17
      • 2019-06-16
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多