Проверьте, существует ли очередь в Утешении
Я использую Java API для подключения к Solace, подготовки очередей и подписки на них по темам. Если эти очереди уже существуют, я бы хотел не делать это снова. С помощью Java API можно проверить, существует ли конкретная очередь и какие разделы сопоставлены с этой очередью?
1 ответ
Лучший способ сделать это - попытаться обеспечить и использовать JCSMPSession.FLAG_IGNORE_ALREADY_EXISTS
а также JCSMPProperties.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 через шину сообщений для выполнения show
команды, но это довольно громоздко.