0
봄이 JmsTemplate은 JNDI 연결 팩토리는 메시지가JMS 템플릿 나쁜 성능 224ms은
이다 게시<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jms="http://www.springframework.org/schema/jms" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<beans:bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<beans:property name="jndiName" value="jms/TesService"/>
<beans:property name="resourceRef" value="false"/>
<beans:property name="lookupOnStartup" value="false"/>
<beans:property name="cache" value="true"/>
<beans:property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</beans:bean>
<jms:listener-container acknowledge="transacted" cache="session" connection-factory="jmsConnectionFactory"
concurrency="1" container-type="default"
container-class="org.kp.oppr.ancillary.jms.container.TesMessageListenerContainer">
<jms:listener id="QL.TEST.84" destination="QL.TEST.OUTPUT.84" ref="ancillaryMessageListener" method="onMessage" />
<jms:listener id="QL.TEST.85" destination="QL.TEST.OUTPUT.85" ref="ancillaryMessageListener" method="onMessage" />
</jms:listener-container>
<beans:bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<beans:property name="sessionTransacted" value="true" />
<beans:property name="pubSubDomain" value="false" />
<beans:property name="connectionFactory" ref="jmsConnectionFactory"></beans:property>
</beans:bean>
<!-- JMS Beans -->
<beans:bean id="jmsMessageProducer" class="org.kp.oppr.test.helpers.JmsMessageProducer">
<beans:property name="jmsTemplate" ref="jmsTemplate"></beans:property>
</beans:bean>
<beans:bean id="testMessageListener" class="org.kp.oppr.test.jms.listener.TestMessageListener" scope="prototype">
<beans:property name="retryDelay" value="${retry.delay}"></beans:property>
<beans:property name="maxRetry" value="${retry.allowed}"></beans:property>
</beans:bean>
및 클래스를 used.` 경우에도 메시지를 게시 할 약 200 ~ 240 밀리 초 소요 메시지를 게시하기
`
큐
package org.test.helpers;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import com.ibm.mq.jms.MQQueue;
public class JmsMessageProducer {
private static final Logger LOGGER = LoggerFactory.getLogger(JmsMessageProducer.class);
private JmsTemplate jmsTemplate;
private MQQueue queue;
public MQQueue getQueue() {
return queue;
}
public void setQueue(MQQueue queue) {
this.queue = queue;
}
/**
*
*/
public void sendMessage(final String message, final String queueName) throws JMSException {
MQQueue queue = new MQQueue(queueName);
queue.setTargetClient(1);
long queueStartTime = System.currentTimeMillis();
jmsTemplate.send(queue, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(message);
//message.setIntProperty(MESSAGE_COUNT, index);
return textMessage;
}
});
if(LOGGER.isInfoEnabled()) {
LOGGER.info("Queue put time: " + (System.currentTimeMillis() - queueStartTime) + " queue: " + queue.getQueueName());
LOGGER.info("Sent message to queue: " + queue.getQueueName() + " message: " + message);
}
}
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
}
</beans:beans>
시간이 220ms로오고 넣어. 의 JNDI 연결 팩토리는
내가 각각
cachingConnectionFactory 구성에서 다음 오류가 발생합니다. {set setExceptionListener not permitted allowed; 중첩 예외는 javax.jms.IllegalStateException : 메서드 setExceptionListener가 허용되지 않음 org.springframework.jms.IllegalStateException : 메서드 setExceptionListener가 허용되지 않습니다. 중첩 예외가 javax.jms.IllegalStateException : 메서드 setExceptionListener 허용되지 않습니다 \t at org.springframework.jms.support.JmsUtils.convertJmsAccessException (JmsUtils.java:279) ~ [spring-jms-4.0.3.RELEASE.jar : 4.0. 3.RELEASE]} – Guest
또한 jmsTemplate.send (queue, message)에 대해 JMSTemplate에 메소드가 없습니다. – Guest
제 잘못,'convertAndSend' 했어야합니다. 수정 된 답변. 전체 스택 추적을 포함하도록 질문을 업데이트하십시오. 리스너 컨테이너가 아닌'JmsTemplate'에 대해서만'cachingConnectionFactory'를 사용해야합니다. –