我正在开发一个应用程序,它从数据库中获取队列详细信息列表并为它们旋转 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的手动机制。在表中引入一个字段,只要队列附加了侦听器,该字段就会被标记(锁定),并且该服务将选择没有锁定的队列。问题是当应用程序停止时必须释放锁,这并不总是成功