是否可以创建 WCF 服务端点来处理来自 Azure 服务总线的死信?

Posted

技术标签:

【中文标题】是否可以创建 WCF 服务端点来处理来自 Azure 服务总线的死信?【英文标题】:Is it possible to create a WCF service endpoint to process dead letters from Azure Service Bus? 【发布时间】:2012-04-24 15:36:00 【问题描述】:

浏览 Azure 服务总线文档和 Web 上的帖子,我只能找到使用 MessageReceiver 类从 $DeadLetterQueue 读取死信的死信处理示例。

虽然上述场景运行良好,但我很好奇是否支持以下场景:

我是否可以指向一个单独的 WCF 服务端点来实质上侦听直接死信队列(例如 sb://mynamespace.servicebus.windows.net/MyTopic/subscriptions/MySubscription/$DeadLetterQueue)上的消息?

期望随着新死信的添加,触发此侦听 WCF 服务端点来处理消息。到目前为止,我进行的实验表明这不受支持。

有人知道 Azure 服务总线是否可以处理此配置?

【问题讨论】:

【参考方案1】:

抱歉,目前我找不到任何关于此的文档。您可以在http://www.mygreatwindowsazureidea.com/forums/40626-windows-azure-appfabric-feature-voting 上提交功能请求。 作为一种解决方法,您可以使用 MessageReceiver 来读取消息,然后如果您愿意,可以将消息发送到 WCF 服务。

【讨论】:

我选择设置一个计划任务,它会定期轮询 $DeadLetterQueue 并将所有死信转发给我指定的处理程序。【参考方案2】:

我认为这应该可行并将尝试一下,只是想知道您是否看过以下guidance:使用 WCF 发布/订阅服务模型时,添加服务端点时必须将主题 URI 指定为地址,订阅 URI 作为监听 URI。您应该能够用 sb://mynamespace.servicebus.windows.net/MyTopic/subscriptions/MySubscription/$DeadLetterQueue

替换监听 URI

【讨论】:

在我的测试中,正如您提到的那样,我将“listenUri”指向订阅,并确保“地址”指向主题。不幸的是,死信不会触发监听端点。 您也可以尝试先从常规队列端点接收吗?我相信有一个服务问题,有时直到主队列上有一个常规接收者时才会将死信消息排入队列。 正在侦听消息的服务托管在 IIS 之外,并启用了 AppFabric 自动启动。常规队列接收器在死信队列接收器之前启动。此外,这可能无法保证常规接收器在死信接收器之前侦听并且仍然是一个问题。

以上是关于是否可以创建 WCF 服务端点来处理来自 Azure 服务总线的死信?的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务端点无法从本地访问

是否可以在同一端口上的 HTTP 中创建另一个端点?

如何使用来自远程服务器的 net.tcp 端点 ping 或检查 WCF 服务的状态?

能否结合来自 WCF 服务的 WSDL 和 XSD 数据?

WCF 服务错误没有在 HTTPS 上侦听的端点

了解带有附件 (SwA) 的 WCF Multipart Soap 服务/端点