Фрагмент кода из моего проекта выглядит следующим образом. Я пытаюсь подключиться к IBM MQ QM и получать сообщения. Я настраиваю слушателей программно, где я устанавливаю параллелизм как 5-10. Не возникает проблем с подключением к очереди, но сеансы прослушивателя всегда находятся в верхнем пределе очереди (10 здесь). Я предполагаю, что он всегда должен начинаться с 5, а затем увеличиваться до 10 при увеличении громкости. Я пробовал то же самое с очередью Tibco EMS, и то же самое. Не уверен, что я делаю не так, и не могу найти здесь обсуждения, которое могло бы помочь Любые полезные указатели очень ценятся.
@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();
}