我有响应队列消息的 webjob 队列触发器,它工作正常。但是,有时我们会手动将消息推送到队列中,并且如果存在导致 DecoderFallBackException 的手动错误。但奇怪的行为是,看起来 webjob 不断尝试无限次,而我们的 AI 日志正在造成混乱。我尝试重新启动 webjob 以查看它是否清除了任何内部缓存但没有帮助。唯一有帮助的是删除队列
理想情况下,超出双端队列计数的任何异常都应将消息移动到毒队列。
我有响应队列消息的 webjob 队列触发器,它工作正常。但是,有时我们会手动将消息推送到队列中,并且如果存在导致 DecoderFallBackException 的手动错误。但奇怪的行为是,看起来 webjob 不断尝试无限次,而我们的 AI 日志正在造成混乱。我尝试重新启动 webjob 以查看它是否清除了任何内部缓存但没有帮助。唯一有帮助的是删除队列
理想情况下,超出双端队列计数的任何异常都应将消息移动到毒队列。
我试图在我这边重现您的问题,但效果很好。首先,我创建一个后端演示,在队列中插入可能导致 DecoderFallBackException 的无效字节消息
Encoding ae = Encoding.GetEncoding(
"us-ascii",
new EncoderExceptionFallback(),
new DecoderExceptionFallback());
string inputString = "XYZ";
byte[] encodedBytes = new byte[ae.GetByteCount(inputString)];
ae.GetBytes(inputString, 0, inputString.Length,
encodedBytes, 0);
//make the byte invalid
encodedBytes[0] = 0xFF;
encodedBytes[2] = 0xFF;
CloudQueueMessage message = new CloudQueueMessage(encodedBytes);
queue.AddMessage(message);
网络作业代码:
public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log)
{
log.WriteLine(message);
}
异常发生 5 次后,消息被移至“queue-poison”。这是预期的行为。在此处查看详细信息:
maxDequeueCount 5 The number of times to try processing a message before moving it to the poison queue.
您可以检查您是否不小心将“maxDequeueCount”设置为更大的值。如果没有,请提供您的网络作业代码以及您如何找到 DecoderFallBackException 以供我们调查。