仅在生产环境中使用 Azure 服务总线死信队列

Azure Service Bus Dead Letter Queue only in Production Environment

我们正在尝试将我们的 esb 迁移到 azure 服务总线。我们有消息发布到服务总线,并有附加到订阅者的 wcf 服务来处理消息。迁移总线后,我们将 wcf 转移到 azure 函数,但目前,我们有代码可以接入订阅者(在 global.asax 中的应用程序启动时),获取消息并将其转发到 wcf端点实施。我们的一条消息仅在我们的生产环境中进入死信队列,所有其他环境似乎都适用于同一条消息。当我检查 DeatLetterReson 和 Description 时,它只是说已超过最大交付数量。我们在 OnMessage 之后的第一行添加了日志记录,试图查看是否存在导致此问题的应用程序错误,但没有记录下来。我从产品中获取有效负载并将其发送到我们的开发环境(认为可能存在奇怪的数据配置问题)并收到消息。此外,其他消息可以在 prod 上使用,我可以点击 wcf endpopint,如果存在连接问题,我通常会在尝试点击端点时看到它(当订阅者连接到服务总线时)。

有没有办法进一步调试,看看为什么消息会进入死信队列?我在想既然订阅者在拉,服务总线就没办法知道为什么消息不能完成,但是我不知道去哪里登录应用程序来确定原因。就像我说的,我在 on 消息的第一行添加了日志记录,检查了 iis 日志,并且似乎在其他环境中工作,并且也在 prod 中用于其他消息…

如有任何建议,我们将不胜感激!

结果是一个没有打开的端口,试图在负载大于65kb时使用,不知道为什么只有在负载达到65kb时才引入。找不到任何抛出的错误,但正在测试来自服务器的端口:

[SocketException (0x274c): 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应...:9354] System.Net.Sockets.Socket.InternalEndConnect(IAsyncResult asyncResult) +6682835 System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) +88 System.ServiceModel.Channels.ConnectAsyncResult.OnConnect(IAsyncResult 结果)+103

打开端口后,好像没问题。