【问题标题】:How do I dead-letter a message with the Azure Service Bus HTTP API如何使用 Azure 服务总线 HTTP API 对消息进行死信
【发布时间】:2013-12-28 03:12:12
【问题描述】:

我正在尝试与 Azure 服务总线集成以执行代理消息传递。我之前已经成功使用过托管的.NET API,但这次我需要使用HTTP API。

在处理消息时,如果我确定消息是有毒的(即它永远无法成功处理),我想将消息移动到死信队列。

在托管 API 中,我会调用 BrokeredMessage.DeadLetterAsync(),它可以让我指定死信消息的原因并将其作为原子操作移至死信队列。

一直在阅读HTTP API documentation,我发现并调用了操作来执行其他操作,例如 peek-lock、删除锁定的消息或放弃锁定,但我找不到明确的操作来死信消息。

HTTP API 中是否存在此操作?

【问题讨论】:

    标签: azure azureservicebus


    【解决方案1】:

    我也查看了 REST Api Reference,但找不到方法。有一个比较表显示了可通过 REST Api 获得的功能和可通过 .NET SDK 获得的功能。

    http://msdn.microsoft.com/en-us/library/windowsazure/hh780771.aspx

    这对我来说听起来很奇怪,因为我认为 .NET SDK 调用了一个 REST API 资源。

    我认为您必须对消息应用 Peek-Lock 并在处理后将其删除。

    Peek-lock 消息:

    http://msdn.microsoft.com/en-us/library/windowsazure/hh780735.aspx

    删除:

    http://msdn.microsoft.com/en-us/library/windowsazure/hh780768.aspx

    【讨论】:

    • 适用于 .NET 的 Windows Azure SDK 支持“本机”服务总线协议 (NetMessaging) 和 AMQP 1.0。它似乎没有接近 HTTP 协议。我对我的问题的最初反应是“看看 API 是怎么做的”,但是 MessagingFactorySettings 没有提供 HTTP 选项:msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    目前不支持通过 http/rest API 执行 DeadLetter 操作。我们将在即将发布的版本中添加该支持。当达到任何消息的最大传递计数但仍未完成时,如果为队列/订阅启用了该功能,它将自动死信。上面提到的连接模式适用于 .NET API,其中 SBMP 服务总线协议通过 http/port80 连接建立隧道,因此它不使用 REST API。

    【讨论】:

    • 我希望您在即将发布的版本中提供此答案时回来并更改此答案。
    【解决方案3】:

    即使我没有找到任何文档,您也可以通过以下方式访问死信消息:

    https://{servicebusnamespace}/{topic}/subscriptions/{subscriptionname}/$deadletterqueue/messages/head

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-10
      • 2017-07-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2012-11-25
      • 2020-02-12
      相关资源
      最近更新 更多