azure - 使用逻辑应用程序清理 ServiceBus Deadletter 队列
问题描述
我们希望使用 Azure 逻辑应用定期清理 ServiceBus DeadLetter Queue。这个想法是每天循环一次所有 DeadLetter 消息并删除超过 x 天的消息。
我使用“从队列中获取消息(窥视锁)”实现了定期“重复”任务。当他们满足我的条件时,他们就完成了,因此从队列中删除。这适用于数百条消息。但是当我用数千条消息对此进行测试时,它开始返回在当前运行期间已经访问过的消息。如果再次处理相同的 messageId,我包含了一个终止处理的条件。
有没有办法实现我们想要的?因此,要遍历所有消息,删除一些消息并保留其他消息而不重复访问它们中的任何一个?
这是流程的简化方案。
解决方案
我认为问题在于您的 For Each 需要并发控制。Get Messages 操作将从队列中返回 X 条消息(默认为 20 条),然后 For Each 操作并行运行,并且这些操作(在 For Each 内部)在退出该循环并开始之前不会等待所有操作完成再次使用“直到”。我会测试更改 For Each 设置/并发控制(右侧省略号)并将并行度降低到一个较低的数字。
推荐阅读
- amazon-s3 - AWS S3 和 Sagemaker:没有这样的文件或目录
- javascript - 字符串到变量的错误转换
- java - 应用程序通过 APK 崩溃,但在本地运行
- sql-server - SQL Server 未在启用副本的数据库上应用架构更改。复制类型是事务
- vue.js - 如何使用 npm 在 highcharts 上安装维恩图模块?
- node.js - 为什么在我的全局节点模块列表中看不到 Node 和 Yarn?
- android - Android:如何通过弃用解决传递依赖冲突
- python - 如何使用 PyGithub 列出企业 Github 上的所有问题
- javascript - 如何从输入中删除特定数字
- android - 带有加载指示器的 TextInputLayout