有什么方法可以知道 IBM MQ 是否已经附加了任何 JMS 侦听器?

问题描述 投票:0回答:0

我正在开发一个应用程序,它从数据库中获取队列详细信息列表并为它们旋转 jms 侦听器。

for( final String queueName : queueList){
            SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
            endpoint.setId( "demo-" + i++ );
            endpoint.setDestination( queueName );
            endpoint.setConcurrency( jmsMessageConcurrency );

            endpoint.setMessageListener( message -> {
                queueController.recv( queueName, message );
            } );
            registrar.registerEndpoint( endpoint );
        }

我面临一个问题,我的容器只有 5 个线程处于活动状态,而 queueList 有 10 个队列。现在只有我的 5 个队列有听众,而其他 5 个队列没有听众。有解决这个问题的想法吗?

我正在考虑旋转相同代码的其他实例来解决这个问题,然后问题是我如何知道队列是否已经有一个侦听器。有什么办法可以知道吗?

任何帮助表示赞赏。

我尝试引入一种基于DB的手动机制。在表中引入一个字段,只要队列附加了侦听器,该字段就会被标记(锁定),并且该服务将选择没有锁定的队列。问题是当应用程序停止时必须释放锁,这并不总是成功

java jms ibm-mq spring-jms
© www.soinside.com 2019 - 2024. All rights reserved.