我正在尝试设置需要使用来自 IBM MQ 队列的消息的 Spring Boot 应用程序,同时确保应用程序的只有一个实例接收所有消息以维护消息顺序。为了实现这一点,我需要配置 Camel 消费者以打开一个启用了 MQOO_INPUT_EXCLUSIVE 选项的连接。
我已经在我的应用程序中设置了 JmsComponent、MQQueueConnectionFactory 和 RouteBuilder,但我找不到属性键和值来通过 MQQueueConnectionFactory 启用连接的 MQOO_INPUT_EXCLUSIVE 选项。
通过更改队列设置中的默认输入打开选项尝试了这种方法,它可以工作,但是有没有办法通过在打开连接时传递此属性来实现此目的?
我尝试在网上搜索有关如何设置此选项的信息,但我一直无法找到解决方案,结果要么与基于骆驼的配置无关,要么已经过时。谁能帮我这个?任何帮助将不胜感激!
尝试在
MQQueueConnectionFactory的方法
MQConstants.MQOO_INPUT_EXCLUSIVE
中使用设置 setMQConnectionOptions(int cTagOpt)
:
@Bean
public MQQueueConnectionFactory connectionFactory() throws Exception {
MQQueueConnectionFactory connectionFactory = new MQQueueConnectionFactory();
connectionFactory.setHostName(...);
connectionFactory.setTransportType(...);
connectionFactory.setChannel(....);
connectionFactory.setPort(....);
connectionFactory.setMQConnectionOptions(MQConstants.MQOO_INPUT_EXCLUSIVE);
connectionFactory.setQueueManager(....);
return connectionFactory;
}
看看这是否有效。