我对SSIS跨进程通信有哪些选择?

时间:2011-03-03 16:30:13

标签: c# .net multithreading ssis cross-process

我想存储一个递增和递减的整数变量(用于限制对外部API的并发请求的计数信号量)。这很容易,除了我需要一种从并行SQL代理作业中运行的SSIS包读取/写入此变量的方法。现在可以有0到5个SQL Agent作业实例,因此可以同时运行SSIS包。

我有哪些阅读和编写此变量的选项?将使用此变量的代码在.NET中编写为自定义SSIS任务。

值完全正确并不是特别重要,只要它通常接近我在公差范围内。确切是好的,但不是必需的。

我可以访问文件系统,注册表,数据库,服务器和SSIS代理作为一个整体,但我想经常检查这个变量15-30个线程,这在历史上导致了使用文件的问题系统方法(我可能做错了),IMO太密集,无法存储在数据库中。如我错了请纠正我。存储在注册表中可防止变量在服务器场中可访问。

如果那里有人可以提供帮助,我很乐意成为你的契约仆人。

2 个答案:

答案 0 :(得分:1)

如果它被用作计数信号量,为什么不实际使用Windows信号量对象? System.Threading.Semaphore是它的.NET版本,如果在构造函数中指定信号量名称 - Win32对象将在使用此名称的所有进程之间共享。

答案 1 :(得分:0)

我不确定我是否理解这个问题 - 您表示您可以访问数据库,文件系统,注册表等。您是否说您不想/不能使用这些方法?您是否希望保留该值,以便在计算机停止运行时可以恢复?

如果不需要持久性,您可以通过RPC(包括COM或Web服务)在内存中保留。无论解决方案是什么,它似乎都需要全局并且对所有正在运行的实例都是可见的。

这个变量元数据是用作控制和协调进程的信号量,还是这个可变域数据?