3

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

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

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

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

如果有任何人可以提供帮助,我很乐意成为您的契约仆人。

4

2 回答 2

2

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

于 2011-03-13T08:00:34.083 回答
0

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

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

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

于 2011-03-03T18:46:10.090 回答