Я пытаюсь прослушать сообщение через приложение загрузки Spring, используя подписку IBM MQ topi c.
Доступная информация (предоставлена администратором MQ):
Topic name
Host
Port
QueueManager
BrokerDurableSubscriptionQueue
Я пытаюсь установить свойство BrokerDurableSubscriptionQueue в MQConnectionFactory.
Я могу найти mqConnectionFactory.setBrokerSubQueue(queueName)
, который, я думаю, можно использовать для подписки на недлительный срок.
Но я не могу найти аналогичное свойство для подписки Durable.
Однако я вижу MQTopi c класс имеет свойство setBrokerDurSubQueue , но я не уверен, как могу ли я использовать объект MQTopi c в моем случае.
Я использую код ниже:
MQConnectionFactory:
@Bean
public MQTopicConnectionFactory topicConnectionFactory(){
MQTopicConnectionFactory mqTopicConnectionFactory= new MQConnectionFactory();
mqTopicConnectionFactory.setHostName(); //mq host name
mqTopicConnectionFactory.setPort(); // mq port
mqTopicConnectionFactory.setQueueManager(); //mq queue manager
mqTopicConnectionFactory.setChannel(); //mq channel name
mqTopicConnectionFactory.setTransportType(1);
mqTopicConnectionFactory.setSSLCipherSuite(); //tls cipher suite name
return mqTopicConnectionFactory;
}
@Bean
public JmsListenerContainerFactory<?> topicListenerFactory(MQTopicConnectionFactory mqtopicConnectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer)
{
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, mqtopicConnectionFactory);
factory.setPubSubDomain(true);
factory.setSubscriptionDurable(true);
return factory;
}
Слушатель:
@JmsListener(
destination = "someTopic",
subscription = "someTopic",
containerFactory = "topicListenerFactory"
)
public void receiveMessage(String msg) {
repository.save(msg);
}