Azure服务总线死信队列仅适用于生产环境



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

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

任何建议都将非常感谢!

它最终是一个未打开的端口,并且试图在有效负载大于65kb时使用,不确定为什么只有在有效负载达到65kb时才引入它。没有发现任何抛出的错误,但是从服务器测试端口得到这个:

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

打开端口后,似乎工作正常。

最新更新