【问题标题】:Logic App Sql Connector as trigger fires many threadsLogic App Sql Connector 作为触发器触发许多线程
【发布时间】:2015-11-12 20:52:42
【问题描述】:

我在我的逻辑应用程序中使用 Sql 连接器作为触发器

  • 操作 1 - 每两分钟触发一次,数据可用查询为 select count(*) from Foo where status = "new" 并轮询数据查询 如select id, name, status from foo where status = "new";
  • 操作 2 - 处理数据;
  • 操作 3 - 使用另一个 sql 连接器将 foo 表状态更新为“完成”;

run image attached 中可以看出,我的数据库中的一个条目启动了多个线程。这是正常的、缺陷还是只是错误的应用程序流动方式?

【问题讨论】:

    标签: azure azure-logic-apps


    【解决方案1】:

    根据您的问题,我了解到您放置了两个 SQL 连接器,一个用于轮询数据,一个用于更新轮询的数据。

    如果上述情况意味着您走错了方向,则不应使用 2 个 SQL 连接器来完成您的工作。您应该只在轮询查询中编写更新语句。

    例如:select id, name, status from foo where status = "new";UPDATE foo SET status='complete' WHERE status = 'new' 只需将您的更新查询附加分号作为分隔符

    【讨论】:

    • 我的目标是仅在成功完成完整逻辑应用程序后更新状态。我希望状态在失败时保持“新”,以便可以发生重试/重播。我已经看到了一些执行您提到的示例的示例,但鉴于整个工作流程不支持事务,因此这是不可取的。感谢您的回复。
    • @WadeB 为什么不创建一个像进行中这样的中间状态。选择状态为新的和相同的更新,状态为进行中;如果您的工作流程失败,请再次将状态更改为新状态,否则请完成
    • 感谢罗摩克里希纳,我认为中间状态可以正常工作。我已经考虑过了。我希望有人可以阐明为什么以及如何一次启动这么多线程。我想更好地理解内部设计,这样我就可以确保即使在触发器中使用“读取和更新”,我也不会得到多余的操作。
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2021-02-12
    相关资源
    最近更新 更多