【发布时间】:2018-04-04 02:16:51
【问题描述】:
我有一个服务总线主题,其中有 400,000 条消息从 Azure 函数推送到它。我有第二个 Azure 函数,它接收消息作为触发器。当第二个函数运行时,它成功处理了 98% 的消息。它给我留下了大约 8,000 条失败的消息。无论是来自异常,还是来自我的代码,消息都被放弃了。我现在有 8,000 条消息位于该主题的订阅者中,我无法让函数重新尝试处理。
订阅者最初设置为只允许 1 次传递消息。我这样做是因为我看到在调试时多次处理相同的消息。我不确定这是否是在本地 Visual Studio 中调试的副作用,或者消息是否会多次发送到函数。我认为这是导致这些消息在被放弃后没有重新运行函数的原因(如果支持的话?)。
我已将订阅者传递计数更改为 5,希望它将消息重新传递给函数。它没有。我现在需要做什么才能让剩余的 8,000 条消息再次触发 2nd Function?
最坏的情况是我可以删除订阅,重新创建订阅并再次运行第一个函数,它应该只发布与原始丢失的 8,000 条消息相关的数据(我有逻辑来处理第一个丢失的数据功能)。这将导致第二个功能重新启动。我想弄清楚当订阅有这样的孤立消息时如何处理它,因为我会在升级到生产时体验到这一点。我希望这是自动化的,而不必处理手动清理和第二次重新运行该过程。
我在完整框架上用 C# Functions 1.0 编写了函数。
【问题讨论】:
-
您可以从死信或毒物队列中获取消息。
-
所以我无法让原来的服务总线触发 Azure 函数再次运行?我必须编写一个实用程序来获取这些消息?
-
在您的 azure 仪表板上,您能在死信或毒物队列中看到此消息吗?如果是的话,你可以得到它们
-
不,主题下所有内容的消息数均为 0。订阅有 8000 条消息,但主题为空。
-
我更新了我的 OP 并附上了主题截图以供参考。
标签: azure azure-functions azureservicebus azure-servicebus-topics