检查Solace中是否存在队列

时间:2017-11-10 21:46:17

标签: solace

我正在使用Java API连接到Solace,提供队列并将它们订阅到主题。如果这些队列已经存在,我想避免再次这样做。使用Java API可以检查特定队列是否存在以及哪些主题映射到该队列?

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是尝试配置并使用JCSMPSession.FLAG_IGNORE_ALREADY_EXISTSJCSMPProperties.IGNORE_DUPLICATE_SUBSCRIPTION_ERROR属性。

这是一个简单的例子:

JCSMPProperties properties = new JCSMPProperties();
properties.setProperty(JCSMPProperties.HOST, "your_router_dns_name");
properties.setProperty(JCSMPProperties.USERNAME, "default");
properties.setBooleanProperty(JCSMPProperties.IGNORE_DUPLICATE_SUBSCRIPTION_ERROR, true);

JCSMPSession session =  JCSMPFactory.onlyInstance().createSession(properties);

Queue queue = JCSMPFactory.onlyInstance().createQueue("myqueue");
EndpointProperties props = new EndpointProperties(); // default properties, modify as needed
session.provision(queue, props, JCSMPSession.FLAG_IGNORE_ALREADY_EXISTS);

Topic topic = JCSMPFactory.onlyInstance().createTopic("my/topic");
session.addSubscription(queue, topic, JCSMPSession.WAIT_FOR_CONFIRM);

请注意,没有实际方法可以验证使用API​​是否存在队列和主题订阅。如果绝对必要,您可以使用SEMP over message bus来执行show命令,但这非常笨拙。