【问题标题】:Consolidating and raising events based on database inserts/updates?基于数据库插入/更新合并和引发事件?
【发布时间】:2011-06-13 07:18:28
【问题描述】:

我们有一个不幸的案例,我们的许多应用程序直接与数据库通信(主要是原生应用程序,我们的托管应用程序通过 DAL)。我们有 300 多个表,需要根据对某些表的修改来引发事件。这些事件将通过企业服务总线 (nServiceBus) 或 MSMQ 引发,我们的应用程序将挂钩这些事件。

例如:

  • 如果表 1 中有插入,表 2 中有更新,则引发一些事件。
  • 如果表 1 有更新,表 2 有删除,表 3 有更新,则引发一些事件。

我们预计总共不会超过 25 个事件,每个事件最多不会超过 5 个表。

信息:

  1. 我们执行大量长时间运行的任务,我们的应用程序需要轮询才能完成。
  2. 我们混合了一些非常旧的应用程序,它们直接与数据库通信,并且不能将它们更改为使用某种 DAL。
  3. 我们需要进行一些原始事件过滤,以便仅审核某些事件而不引发某些事件。
  4. 我们使用的是 SQL Server 2008 R,但可能在我们的所有安装站点都没有企业许可证。

我们正在寻找我们可以使用的类似 CDC 的解决方案。指向可能的解决方案或输入/经验的指针将非常有帮助:)

【问题讨论】:

    标签: .net wcf sql-server-2008 events esb


    【解决方案1】:

    我更愿意避免这种情况,并且已经避免了几次。

    我的备用计划(即制定了草图但从未实施)是:

    • 使用触发器将消息提供给队列
    • 使用 Service Broker 读取这些消息
    • 在服务代理中使用 .NET 程序集来调用 WCF 服务(或者可能在 MSMQ 上发送消息)。

    使用队列和服务代理意味着触发器不需要任何重要的处理和阻止客户端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-10
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      相关资源
      最近更新 更多