[英]In the Azure functions Python SDK, how do I get the number of topics for a given namespace?
I'm using Python 3.8 with azure-mgmt-servicebus= v. 1.0.0.我正在使用 Python 3.8 和 azure-mgmt-servicebus= v.1.0.0。 I would like to get the number of topics for a given namespace.
我想获取给定命名空间的主题数。 I have tried the below...
我已经尝试了以下...
credential = ServicePrincipalCredentials(self._client_id, self._client_secret, tenant=self._tenant)
sb_client = ServiceBusManagementClient(credential, self._subscription)
...
topics = sb_client.topics.list_by_namespace(
resource_group_name=self._resource_group_name,
namespace_name=namespace
)
num_topics = 0
while topics.current_page:
num_topics += topics.current_page.count
topics.next
logging.info("num topics: %s", num_topics)
My "num_topics" consistently comes back with zero, despite the fact I have verified that my connection is being made (I can create a topic with the same connection) and I can see many topics for the given information in the Azure portal.我的“num_topics”始终返回零,尽管事实上我已经验证了我的连接正在建立(我可以使用相同的连接创建一个主题)并且我可以在 Azure 门户中看到给定信息的许多主题。 I'm thinking I'm not using the API properly but am unsure where things are falling apart.
我在想我没有正确使用 API 但我不确定哪里出了问题。 How do I get the number of topics for a given namespace?
如何获取给定命名空间的主题数?
If you want to get the number of the topics for a given service bus namespace, you could use the code below.如果您想获取给定服务总线命名空间的主题数,可以使用以下代码。
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.servicebus import ServiceBusManagementClient
subscription_id = "<subscription-id>"
rg_name = "<resource-group-name>"
tenant_id = "<tenant-id>"
client_id = "<client-id>"
client_secret = "<client-secret>"
credential = ServicePrincipalCredentials(client_id=client_id, secret=client_secret, tenant=tenant_id)
sb_client = ServiceBusManagementClient(credential, subscription_id)
topics = sb_client.topics.list_by_namespace(resource_group_name= rg_name, namespace_name= "servicebusname")
num_topics = 0
for topic in topics:
num_topics += 1
print(num_topics)
Check the topics in the portal, the result is correct:检查门户中的主题,结果是正确的:
Update:更新:
If you don't want to use the loop, you could convert the topics
to a list, then use the len()
function.如果不想使用循环,可以将
topics
转换为列表,然后使用len()
function。
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.servicebus import ServiceBusManagementClient
subscription_id = "<subscription-id>"
rg_name = "<resource-group-name>"
tenant_id = "<tenant-id>"
client_id = "<client-id>"
client_secret = "<client-secret>"
credential = ServicePrincipalCredentials(client_id=client_id, secret=client_secret, tenant=tenant_id)
sb_client = ServiceBusManagementClient(credential, subscription_id)
topics = sb_client.topics.list_by_namespace(resource_group_name= rg_name, namespace_name= "servicebusname")
testlist = list(topics)
print(len(testlist))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.