Как проверить, что очередь на Azure существует в Java? - PullRequest
0 голосов
/ 13 сентября 2018

У нас есть служба, которая получает имя очереди и, если очередь существует, отправляет данные в очередь. Я ищу, чтобы найти способ проверить, существует ли очередь на Azure в Java. До сих пор, используя IQueueClient, я могу узнать только, существует ли очередь при отправке данных через sendAsync с возвратом исключения. Я хочу узнать, когда клиент создан или даже раньше.

Лучший ответ, который я нашел, - это использование NamespaceManager. таким образом:

Uri uri = ServiceManagementHelper.GetServiceUri();
TokenProvider tokenProvider = ServiceManagementHelper.GetTokenProvider(uri);

NamespaceManager nm = new NamespaceManager(uri, tokenProvider);
if (!nm.QueueExists("TestQueue")) return;

источник:

http://www.cloudcasts.net/devguide/Default.aspx?id=12018 https://www.pmichaels.net/2017/06/11/reading-message-azure-service-bus-queue/

Однако этот класс, по-видимому, не является частью библиотеки Azure-Core или Azure-Servicebus, и я, кажется, могу найти, какую библиотеку добавить в проект, чтобы иметь доступ к этому классу.

1 Ответ

0 голосов
/ 14 сентября 2018

Однако этот класс, похоже, не является частью библиотеки Azure-Core или Azure-Servicebus, и я могу найти, какую библиотеку добавить в проект, чтобы иметь доступ к этому классу.

Вы упомянули код, связанный с .net SDK. Для Java SDK мы могли бы использовать следующую проверку кода, если очередь существует. ManagementClient кажется доступным только в версии 2.0.0-PREVIEW . Мы также можем получить исходный код от GitHub .

String connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;SharedAccessKeyName=SharedAccessKeyName;SharedAccessKey=xxxxxxxx=";
ConnectionStringBuilder connectionStringBuilder = new ConnectionStringBuilder(connectionString);
ManagementClient client = new ManagementClient(connectionStringBuilder);
boolean isExist = client.queueExists("queueName");
System.out.println(isExist);

Результат теста:

enter image description here

...