繁体   English   中英

Azure服务总线-有关订阅的消息速览

[英]Azure Service Bus - Message Peek on Subscription

我对Azure Service Bus的主题/订阅具有监听访问权限。 有没有一种方法可以验证订阅中是否有一条消息以及其中有多少条消息。 我没有管理连接字符串,并且我认为我无法运行Service Bus Explorer。 我无意从订阅中读取消息。

只能使用“管理连接”字符串来检索主题订阅中消息的计数。 使用“侦听连接”字符串,您无法读取消息的属性或计数。

但是,您可以使用“监听连接”字符串来查看订阅中的消息。 窥视消息不会锁定或从订阅中删除消息。 您可以根据需要多次查看消息。

因此,借助“侦听连接”字符串,您可以通过在while循环内逐个窥视消息并在​​循环内添加一个counter来查找订阅中的消息数。 计数器值是订阅内的消息数。

我无意从订阅中读取消息。

简短的答案是否定的 需要管理访问权限才能获取主题或订阅消息信息。

如果要获取订阅消息数,可以尝试以下两种方法:

1.您具有管理访问权限,可以使用以下演示代码来执行此操作。

var topicName = "topic1";
var subscriptionName = "subscription";
var address = "sb://xxx.servicebus.windows.net/"; //base address of namespace you are connecting to.
MessagingFactorySettings MsgFactorySettings = new MessagingFactorySettings
 {
     TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("SharedAccessKeyName", "xxxxxx"),
 };
MessagingFactory msgFactory = MessagingFactory.Create(address, MsgFactorySettings);
NamespaceManager manager = new NamespaceManager(msgFactory.Address,msgFactory.GetSettings().TokenProvider);
var subscriptioncDescription = manager.GetSubscription(topicName, subscriptionName);
var count = subscriptioncDescription.MessageCountDetails.ActiveMessageCount;

2.使用Azure Microsoft.Azure.Management.ServiceBus.Fluent sdk。 您需要注册Azure AD应用程序并为其分配相应的角色。 有关更多信息,请参考另一个SO线程

 var subscriptionId = "Azure subscriptionId";
 var resourceGroupName = "rgName";
 var nameSpace = "tomtestsb";
 var topicName = "topic1";
 var subscriptionName = "subscription";
 var credentials = SdkContext.AzureCredentialsFactory.FromFile(@"D:\Tom\Documents\azureCred.txt");
 var client = new ServiceBusManagementClient(credentials);
 client.SubscriptionId = subscriptionId;
 var topic = client.Topics.GetAsync(resourceGroupName, nameSpace, topicName).Result;
 var topicMessagecount = topic.CountDetails.ActiveMessageCount;
 var subscription = client.Subscriptions.GetAsync(resourceGroupName, nameSpace, topicName, subscriptionName).Result;
 var subscriptionMessagecount = subscription.CountDetails.ActiveMessageCount;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM