如何验证 java 中 azure 上是否存在队列?

How to verify that a queue exist on azure in java?

我们有一个接收队列名称的服务,如果队列存在则将数据推送到队列中。 我正在寻找一种方法来检查 java 中 azure 上是否存在队列。 到目前为止,使用 IQueueClient 我只能知道在通过 sendAsync 发送数据时队列是否存在 return 异常。 我想知道客户端是什么时候创建的,甚至更早。

到目前为止我找到的最佳答案是使用 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/

然而,这个 class 似乎不是 azure-core 或 azure-servicebus 库的一部分,我似乎可以找到要添加到项目中的库以访问那些 class。

However this class seem not to be part of azure-core or azure-servicebus librairy and I can seem to find which lib to add to the project to have access to those class.

您提到的代码与.net SDK 相关。对于 Java sdk,我们可以使用以下代码检查队列是否存在。 ManagementClient 似乎只能在 2.0.0-PREVIEW version. We also could get the source code from 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);

测试结果: