为什么一些 azure 服务总线消息在 kubectl 日志中没有任何错误地进入 Deadletter 队列?

Why some azure service bus message go to Deadletter queue without any error in kubectl log?

我通过 kubectl logs <-POD-> 检查了 Azure AKS 日志,我在开始处理它时在开头记录了消息 ID。但是,没有日志记录几条突然发到Deadletter的消息。我试图再次将它们放入正常队列,但遇到了类似的结果。

为什么会这样?如何解决?

下面是我有时能看到的日志,但应该也是在一段时间后恢复处理消息。 (我运行4pods并联)

    Error for serviceBusService.receiveQueueMessage()
    Error: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    <HTML><HEAD><TITLE>Service Unavailable</TITLE>
    <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
    <BODY><h2>Service Unavailable</h2>
    <hr><p>HTTP Error 503. The service is unavailable.</p>
    </BODY></HTML>
        at Function.ServiceClient._normalizeError (/usr/src/app/node_modules/azure-common/lib/services/serviceclient.js:757:12)
        at ServiceBusService.ServiceClient._processResponse (/usr/src/app/node_modules/azure-common/lib/services/serviceclient.js:455:41)
        at Request.processResponseCallback [as _callback] (/usr/src/app/node_modules/azure-common/lib/services/serviceclient.js:213:35)
        at Request.self.callback (/usr/src/app/node_modules/request/request.js:185:22)
        at Request.emit (events.js:203:13)
        at Request.<anonymous> (/usr/src/app/node_modules/request/request.js:1161:10)
        at Request.emit (events.js:203:13)
        at IncomingMessage.<anonymous> (/usr/src/app/node_modules/request/request.js:1083:12)
        at Object.onceWrapper (events.js:291:20)
        at IncomingMessage.emit (events.js:208:15)

看起来您可能遇到了 transient exception。对于此类错误,您可以设置一个带有回退的重试,直到成功。

我相信在大多数情况下,此类错误应该在重试几次后解决,除非当时服务出现重大问题。