Spring引导SimpleJMListenerEndpoint并发设置不工作
我的项目中的代码片段如下所示。我正在尝试连接到IBM MQ QM并接收消息。在将concurreny设置为5-10的情况下,我以编程方式配置侦听器。连接到队列时没有问题,但侦听器会话始终处于队列的上限(此处为10)。我假设它应该总是从5开始,然后在音量增加时放大到10。我在Tibco EMS队列中也尝试了同样的方法,同样的。不确定我在这里做错了什么,也找不到任何有帮助的讨论。非常感谢任何有用的指点Spring引导SimpleJMListenerEndpoint并发设置不工作,spring,concurrency,spring-jms,Spring,Concurrency,Spring Jms,我的项目中的代码片段如下所示。我正在尝试连接到IBM MQ QM并接收消息。在将concurreny设置为5-10的情况下,我以编程方式配置侦听器。连接到队列时没有问题,但侦听器会话始终处于队列的上限(此处为10)。我假设它应该总是从5开始,然后在音量增加时放大到10。我在Tibco EMS队列中也尝试了同样的方法,同样的。不确定我在这里做错了什么,也找不到任何有帮助的讨论。非常感谢任何有用的指点 @Slf4j @Component public class ConsumerConfig {
@Slf4j
@Component
public class ConsumerConfig
{
@Value("${wmq.reqQueue}")
String partnerReqReceiverDestination;
@Value("${wmq.requestConcurrency}")
String partnerReqReceiverConcurrency;
private final JmsListenerEndpointRegistry wmqListenerEndpointRegistry = new JmsListenerEndpointRegistry();
public MQQueueConnectionFactory mqQueueConnectionFactory() throws Exception
{
System.setProperty("com.ibm.mq.cfg.useIBMCipherMappings",ibmMqConfig.getUseIBMCipherMappings());
System.setProperty("javax.net.ssl.trustStore",ibmMqConfig.getTrustStore());
System.setProperty("javax.net.ssl.trustStorePassword",ibmMqConfig.getTrustStorePassword());
System.setProperty("javax.net.ssl.keyStore",ibmMqConfig.getKeyStore());
System.setProperty("javax.net.ssl.keyStorePassword",ibmMqConfig.getKeyStorePassword());
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
try
{
mqQueueConnectionFactory.setHostName(ibmMqConfig.getHostname());
mqQueueConnectionFactory.setQueueManager(ibmMqConfig.getQueueManager());
mqQueueConnectionFactory.setPort(ibmMqConfig.getPort());
mqQueueConnectionFactory.setChannel(ibmMqConfig.getChannel());
mqQueueConnectionFactory.setSSLCipherSuite(ibmMqConfig.getSslCipherSuites());
mqQueueConnectionFactory.setCCSID(ibmMqConfig.getCcsid());
mqQueueConnectionFactory.setClientReconnectOptions(WMQConstants.WMQ_CLIENT_RECONNECT);
mqQueueConnectionFactory.setClientReconnectTimeout(ibmMqConfig.getClientReconnectTimeout());
mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
catch (Exception ex)
{
throw new Exception(ExceptionUtils.getStackTrace(ex));
}
return mqQueueConnectionFactory;
}
public SimpleJmsListenerContainerFactory wmqListenerContainerFactory() throws Exception
{
SimpleJmsListenerContainerFactory wmqContainerFactory = new SimpleJmsListenerContainerFactory();
wmqContainerFactory.setConnectionFactory(mqQueueConnectionFactory());
wmqContainerFactory.setDestinationResolver(new DynamicDestinationResolver());
wmqContainerFactory.setPubSubDomain(Boolean.FALSE);
wmqContainerFactory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
return wmqContainerFactory;
}
public void configureWmqListeners()
{
SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
endpoint.setId(sourceRegion + "-" + String.valueOf(Thread.currentThread().getId()));
endpoint.setDestination(this.partnerReqReceiverDestination);
endpoint.setConcurrency(this.partnerReqReceiverConcurrency);
endpoint.setMessageListener(testRequestHandler);
try
{
this.wmqListenerEndpointRegistry.registerListenerContainer(endpoint,wmqListenerContainerFactory());
}
catch (Exception ex)
{
throw(ex);
}
this.wmqListenerEndpointRegistry.start();
}