2

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;
        }
        });

    }
}
4

1 に答える 1

6

JMSTemplateを使用してJavaEEコンテナーからメッセージを送信する場合の一般的な問題は、メッセージごとに新しい接続を取得する(そして閉じる)ため、非常に遅いことです。ここで速度を上げるには、おそらくプール/キャッシュ接続が必要になります。

この記事を読んでください。ActiveMQ用に書かれていますが、WebSphere MQと同様の方法で適用されます:http://activemq.apache.org/jmstemplate-gotchas.html

次のようなものを使用して、春にキャッシュ接続ファクトリを設定できます。

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

次に、JMS接続に元の接続の代わりに使用します。

于 2012-09-07T12:23:23.870 に答える