2012-09-03 9 views
2

나는 아래의 구성을 가지고있다. 잘 동작하지만 성능이 너무 낮다. (20 개의 메시지에 대해 1 분이 소요된다.) 성능 향상을 위해 변경 사항을 제안 해주십시오.Spring-JMS (Websphere MQ)

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

그리고 내 보낸 프로그램으로 봄에서 전화를하고는 다음과 같습니다 JavaEE 어플 컨테이너에서 메시지를 보내이 JmsTemplate을 사용

 @Cacheable("message") 

    public void sendMesage() { 

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

    } 
} 

답변

6

일반적인 문제는 그것이이며 매우 년대입니다 각 메시지에 대해 새 연결을 얻은 다음 느리게 연결합니다. 여기서 속도를 높이려면 풀링 된/캐시 된 연결이 필요할 것입니다.

이 기사를 읽고, 그것은 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 연결을 위해 원래의 연결 대신 사용하십시오.