0

场景:Windows 服务将为到达网络文件共享的每个文件生成一个任务(例如 T1)。然后将文件分为批次,这些批次通过产生更多任务发送到 Java WebService(SOAP),例如 a1、b1、c1 ...。目前我们将 WCF 客户端代理存储在任务 a1、b1 的 ThreadLocal 中, c1....也就是说,我们正在为各个线程重新创建代理以提高可靠性,并在调用完成后关闭/中止它。

您能否建议任何可以避免代理创建成本或使用线程本地存储的替代设计?

4

1 回答 1

0

如果代理是线程安全的,您可以使用一个代理进行所有通信吗?

如果代理不是线程安全的,您可以维护一个代理池。任务 a1、b1 和 c1 将从池中签出代理,然后在完成后将代理重新签入。典型的池化问题会出现在这里,例如如果没有免费的代理在需要时怎么办(制作一个?“等待”直到一个准备好?这个新的代理应该返回池中还是丢弃?)或者什么如果代理进入持久错误状态时执行此操作。

于 2013-11-10T10:40:28.613 回答