【发布时间】:2013-08-22 13:37:33
【问题描述】:
我们有一些运行时间很长的 ETL 包(有些运行了几个小时)需要由 NServiceBus 端点启动。我们不需要在整个过程中保持单个事务处于活动状态,并且可以将其分解为更小的事务。由于 NServiceBus 处理程序会将其自身包装在一个事务中,因此我们不希望在单个事务中处理它,因为它会超时——更不用说在 DBMS 中产生锁定问题了。
我目前的想法是我们可以异步生成另一个进程,立即从处理程序返回,并在完成时发布事件(成功或失败)。我还没有找到很多关于如何将新的 NServiceBus 4.0 SQL Server Broker 支持与传统的 MSMQ 传输集成的文档。这可能吗?
在 SQL Server 2012(或 SSIS 包)中让长时间运行的进程以异步方式完成时通知 NServiceBus 订阅者的首选方法是什么?
【问题讨论】:
-
对nservicebus一无所知,是否有什么东西会阻止您的SSIS包在完成时调用方法/将消息放入队列?
-
我不知道,我只是在问最简单的方法是什么。最坏的情况是,您可以在 SSIS 中手动编写代码(或 SQL Server 上的 CLR 中的一些托管代码)以将消息放入 MSMQ 队列中——但是,您随后会丢失 NServiceBus 中内置的一些功能,这些功能可以帮助您管理这些排队。
标签: ssis sql-server-2012 nservicebus