我们有一个接收队列名称的服务,如果队列中存在推送数据的队列。我正在寻找一种方法来检查java中的azure队列是否存在。到目前为止,使用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 librairy的一部分,我似乎可以找到添加到项目中的lib以访问这些类。
然而,这个类似乎不是azure-core或azure-servicebus librairy的一部分,我似乎可以找到添加到项目中的lib以访问这些类。
您提到的代码与.net SDK有关。对于Java sdk,我们可以使用以下代码检查队列是否存在。 ManagementClient
似乎只在2.0.0-PREVIEW version有售。我们也可以从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);
测试结果: