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

使用qpid-proton向Azure服务总线发送持久消息-url解析错误

柳修为
2023-03-14

我尝试使用python-qpid-proton Version0.9.1向Azure服务总线队列发送消息。

examples/python/messenger/中的示例接受形式为amqps://:@/的地址,我可以用它成功地将消息发送到Azure上的队列。这样做的问题是,我无法控制正在发生的事情,也就是说,我不能真正看到发送是否失败。最后,我希望在internet连接暂时中断的情况下保留这些消息。

示例代码examples/python/db_send.py和examples/python/simple_send.py在这方面似乎更有用,因为它们使用MessagingHandler而不是Messenger类。但是当我运行它们时,我会得到这样的错误:

 ./simple_send.py -a amqps://send:mxirestofmypassword@testsoton.servicebus.windows.net/queue2
Traceback (most recent call last):
 File "./simple_send.py", line 62, in <module>
    Container(Send(opts.address, opts.messages)).run()
  File "/usr/local/lib/python2.7/dist-packages/proton/reactor.py", line 120, in run
    while self.process(): pass
  File "/usr/local/lib/python2.7/dist-packages/proton/reactor.py", line 143, in proce
    self._check_errors()
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3737, in dis
    ev.dispatch(self.handler)
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3662, in dis
    result = dispatch(handler, type.method, self)
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3551, in dis
    return m(*args)
  File "/usr/local/lib/python2.7/dist-packages/proton/handlers.py", line 416, in on_r
    self.on_start(event)
  File "./simple_send.py", line 36, in on_start
    event.container.create_sender(self.url)
  File "/usr/local/lib/python2.7/dist-packages/proton/reactor.py", line 671, in creat
    session = self._get_session(context)
  File "/usr/local/lib/python2.7/dist-packages/proton/reactor.py", line 634, in _get_
    return self._get_session(self.connect(url=context))
  File "/usr/local/lib/python2.7/dist-packages/proton/reactor.py", line 611, in conne
    if url: connector.address = Urls([url])
  File "/usr/local/lib/python2.7/dist-packages/proton/reactor.py", line 555, in __ini
    self.values = [Url(v) for v in values]
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3851, in __i
    if defaults: self.defaults()
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3894, in def
    self.port = self.port or self.Port(self.scheme)
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3868, in _ge
    return portstr and Url.Port(portstr)
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3812, in __n
    port = super(Url.Port, cls).__new__(cls, cls._port_int(value))
  File "/usr/local/lib/python2.7/dist-packages/proton/__init__.py", line 3833, in _po
    raise ValueError("Not a valid port number or service name: '%s'" % value)
ValueError: Not a valid port number or service name: 'mxitheresto'
 import proto
 u =     proton.Url("amqps://send:mxirestofmypassword@testsoton.servicebus.windows.net/queue2")
 # no error, and I can access all the parameters:
 u.port
 5671
 u.username
 send
 # ...

共有1个答案

阳文轩
2023-03-14

示例examples/python/db_send.py和examples/python/simple_send.py请求Azure服务总线是可以的,但是它们不能用AMQPS方案建立发送方连接。

请参阅MSDN官方文档https://MSDN.microsoft.com/en-us/library/azure/jj841070.aspx,MS建议使用Messenger类发送消息。

关于您的问题的详细情况,请参阅我在Python-qpid-proton示例的帖子,发送消息到azure不工作。

 类似资料:
  • 我正在使用Java和Qpid JMS 0.23测试发布/订阅。 我在SB中创建了一个名为“测试主题”的主题。 我可以从测试应用程序向主题发布消息,但在尝试订阅(动态创建订阅)时失败,例外情况: javax.jms.InvalidDestinationException:找不到消息传递实体mynamesspace:主题:test.topic~15|DurableSubscriber2。Trackin

  • 使用Azure Service Bus-Topics,我想实现一个解决方案,其中一旦生产者将消息发送到Topic,消息就会被发送/通知给最终消费者(比如队列)。 我理解主题作为pub/sub模型工作,其中订阅者需要从订阅中读取消息。但是我正在寻找一种类似队列的工作方法(当接收到任何消息时,它会触发web作业/服务)。 首先,我想知道服务巴士的主题是否是正确的选择?接下来,如果可能的话,实现一个变通

  • 我正在构建Windows Phone应用程序,无法使用Microsoft。服务总线。信息。QueueClient类。 然后,我尝试使用Azure Service Bus REST API进行发送,但这需要我构建一个SAS令牌。但要构建SAS令牌,我需要使用Windows。安全密码学。果心MacAlgorithmNames。HmacSha256。此类显示在前面的类型中,但在编译时它不存在。 如何使用

  • Azure服务总线可以发送计划的消息。使用此处描述的AMQP协议发送计划消息:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-request-response#message-operations 调度消息。要求 请求消息必须包括以下应用程序属性: |键|值|类型|必需|值内容 |操作|字符

  • 我正在尝试在Azure中构建一个简单的WebAPI REST服务,后端有一个服务总线队列工作器。我可以从Web API向工作人员发送一条消息。然而,我试图发送更多的信息,只是为了看看一切是如何运作的。因此,我创建了一个简单的控制器,如下所示: 当我呼叫控制器时,我只收到工作人员接收到的大约1/2的消息。其余的似乎都被放弃了。

  • 我在Azure中托管了两个云服务辅助角色,一个使用NServiceBus(Azure服务总线传输)消耗消息,另一个生成消息。 昨天,我部署了一个新版本的生产者工作者角色,而队列中仍然有大量消息,因为我们正在处理早上遗留下来的大量消息。当生产者启动时,它似乎已经清空(或者可能重新创建)队列,许多重要的生产消息丢失。这似乎很奇怪,但日志显示,大约在生产者角色启动时,消费者没有处理进一步的消息,我们知道

  • 我可以很好地从服务总线订阅接收消息,但当侦听器中发生异常时,似乎最终会将state=Modified和undeliverableHere=true的处置框架发送到服务总线。服务总线的文档说它不支持amqp修改的配置。 消息以服务总线中的延迟状态结束,我不知道如何将消息推回到活动状态。 JMS配置: 听众: 以下是我在日志中看到的内容: 消息传输开始 抛出异常,然后JMS在本地重新传递消息50次(为

  • 我的出发点是一个HTTP触发的Azure函数。它从请求正文中收集一些JSON,并将该消息传递给Azure服务总线。 我在这里一定遗漏了一些东西(我以前在RabbitMQ中使用过控制台应用程序),但是我如何从HTTP触发的Azure函数向服务总线发布消息。 我找到了几个关于配置function.json的参考资料(在Visual Studio中就是-im构建)。 **更新**仍然无法使其工作。得到了