Azure ServiceBus:程序化创建队列共享访问策略
我需要用Python在Azure ServiceBus中创建一些实体。
创建一个队列非常顺利:
adminClient.create_queue('<name>', default_message_time_to_live='P8D', uplicate_detection_history_time_window='PT1H', lock_duration='PT1M', max_delivery_count=100, max_size_in_megabytes=4096, max_message_size_in_kilobytes=256)
这个队列创建的时候没有共享访问策略,所以我也想在代码中做到这一点:
adminClient.create_queue('<name>', authorization_rules=[ AuthorizationRule(type='SharedAccessPolicy',key_name='...',rights=[ 'Send' ]) ], default_message_time_to_live='P8D', uplicate_detection_history_time_window='PT1H', lock_duration='PT1M', max_delivery_count=100, max_size_in_megabytes=4096, max_message_size_in_kilobytes=256)
运行这段代码时出现了azure.core.exceptions.HttpResponseError: SubCode=50000. Internal Server Error
的错误。我甚至不知道SharedAccessPolicy
作为type
是否正确。我尝试添加了primary_Key='...'
和secondary_key='...'
,但结果还是一样。
我知道有一份文档在这里:https://azuresdkdocs.blob.core.windows.net/$web/python/azure-servicebus/latest/azure.servicebus.management.html#azure.servicebus.management.AuthorizationRule,但这并没有真正帮助我。
我遗漏了什么呢?
1 个回答
0
这个方法对我有效。
我使用了来自 azure-mgmt-servicebus
包的 azure.mgmt.servicebus
。
如果需要参考,可以查看这个 文档。
我的代码:
app.py
:
from azure.mgmt.servicebus import ServiceBusManagementClient
from azure.identity import DefaultAzureCredential
credentials = DefaultAzureCredential()
sub_id = "xxxxxxxxxxxxxxxxxxxx"
resource_group = "xxxxxxxxxxxxxx"
client = ServiceBusManagementClient(credential=credentials,subscription_id=sub_id)
#create queue
client.queues.create_or_update(resource_group,"pysdksb","sdkqueue",parameters={"properties":{"enablePartitioning": True}})
# create an authorization rules in created queue.
client.queues.create_or_update_authorization_rule(resource_group,"pysdksb","sdkqueue",authorization_rule_name="sdkauth",
parameters={"properties": {"rights": ["Listen", "Send"]}},)
print("Queue created with Shared Access Policy.")