Проверьте, существует ли очередь в Утешении

Я использую 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 команды, но это довольно громоздко.

Другие вопросы по тегам