当前位置: 首页 > 知识库问答 >
问题:

使用新的Azure service bus SDK(7.0.0),创建主题、订阅和授权规则的正确方法是什么?

程项禹
2023-03-14

我使用的是Python3.8和新的Azure SDK for Python,特别是Azure-MGMT-ServiceBus7.0.0版本。在以前的版本中,每当需要创建服务总线主题、订阅和适当的授权规则时,我可以

sb_client = self._get_sb_client()
    authorization_rule_rights = [AccessRights.listen]
    sb_client = self._get_sb_client()
    sb_client.topics.create_or_update(
        resource_group_name, namespace_name, topic_name, parameters=TOPIC_PARAMS)
    sb_client.subscriptions.create_or_update(
        resource_group_name, namespace_name, topic_name, 
        SB_SUBSCRIPTION_NAME, parameters=SUBSCRIPTION_PARAMS)

    # Create auth rule
    sb_client.topics.create_or_update_authorization_rule(
        resource_group_name=resource_group_name,
        namespace_name=namespace_name,
        topic_name=topic_name,
        authorization_rule_name=SB_SAS_POLICY_LISTEN,
        parameters=authorization_rule_rights)

但是,使用新的SDK,我的“create_or_update_authorization_rule”现在抛出一个

   msrest.exceptions.SerializationError: Unable to build a model: Unable to deserialize to object: type, AttributeError: 'list' object has no attribute 'get', DeserializationError: Unable to deserialize to object: type, AttributeError: 'list' object has no attribute 'get'

错误。新的文档--https://docs.microsoft.com/en-us/python/api/overview/azure/servicebus?view=azure-python#service-bus-topics-and-subscriptions,没有详细说明如何创建主题,只是使用现有主题发送消息。使用最新的SDK,创建主题、订阅和授权规则的正确方法是什么?

共有1个答案

翟源
2023-03-14

据我所知,azure-mgmt-servicebus的最新版本是6.0.0。

要创建授权规则,您应该将authorization_rule_rights的值设置为JSON格式。

这里有一个例子:

       authorization_rule_rights= {
          "rights": [
            "Listen",
            "Send"
          ]
        }

        result = sb_client.topics.create_or_update_authorization_rule(
                   resource_group_name=RESOURCE_GROUP, 
                   namespace_name=NAMESPACE_NAME, 
                   topic_name=TOPIC_NAME, 
                   authorization_rule_name=AUTHORIZATION_RULE_NAME, 
                   parameters=authorization_rule_rights)
 类似资料:
  • https://github.com/azure/azure-service-bus/tree/master/samples/dotnet/gettingstart/microsoft.azure.servicebus/topicsubscriptionwithruleoperationssample 现在我想添加一个筛选器/规则,这样只有通过筛选器中定义的特定条件的消息才应该给订阅。 例如,下面

  • 我定义了一个Xtext语法规则来解析一个简单的时间戳,比如YYYY-MM-DDTHH-MM-SS,但是,当我发送类似于

  • 我需要为ActiveMQ创建一个主题和一个持久订阅者,我的问题是我不知道在哪里指定它。我可以创建主题并使用消息,但是当我关闭订阅者然后继续发送消息并再次打开订阅者时,它不会读取它们。 这是我目前掌握的情况: 发送消息: 接收消息: 我已经阅读了这篇文章,我明白我需要创建持久订阅者。 我也读过spring文档 我认为它与(我没有实现,我使用的是默认配置)有关,文档显示: 但是我似乎找不到在哪里创建持

  • 我目前正在尝试将我的应用程序迁移到firebase,我正在寻找firebase的解析安装和通道。 我发现我们应该使用主题,但在我的应用程序中,“订阅”和“取消订阅”主题很常见,但没有办法(我发现)看到用户订阅了哪些主题。有什么想法吗? 我已经阅读了Firebase文档,但我是Firebase新手,因此可能有更多经验的人会知道:https://firebase.google.com/docs/clo

  • null 现在,我仍然困惑的是,登录验证应该从哪里来(登录用户名-密码)?是否在转到OAuth流之前进行单独的验证,一旦用户有效,它就应该回到流中?

  • 我试图创建基于@JmsListener注释的发布-订阅示例:https://github.com/lkrnac/book-eiws-code-samples/tree/master/05-jms/0515-publish-subscribe 相关代码片段: 问题是,要获得这种行为: 但每个消息都应该由两个侦听器根据主题的定义来使用。我错过了什么?