我开发了一个WCF服务(恰好在MSMQ队列上侦听)。我没有放入任何特定的与线程相关的代码,因此它默认以多线程方式运行。这对于实时环境来说很好(并且最可能是期望的),但是现在这个服务仍在测试中。我无法完全控制消息何时出现在测试队列中,所以我遇到了很多可能会出现的情况。
该服务执行了大量的诊断日志记录,但我必须使用的日志记录机制(“公司标准”)不支持线程。所以结果就是当时有几个线程运行我的日志变得一团糟。我想做的是在测试时将线程数量调回1。
我已经看到了在代码中实现单线程的各种方法,但我真的不想将一个二进制文件发布到Test和另一个二进制文件到Live。
我知道WCF对配置文件的使用非常热,所以我想知道是否有某种方式,纯粹在配置中,告诉WCF服务是否在单线程或多线程模式下监听?
TIA, 皮特
答案 0 :(得分:1)
您可以将所有代码放在服务中,在依赖注入框架可以在运行时注入的包装类中。
使用依赖注入,您可以配置是将实现依赖关系实现为单例还是实现每个请求实例。
但是,以“单线程模式”测试应用程序是不够的。
或者,为什么不在日志信息中包含当前正在执行的threadid - 然后根据需要按threadid过滤日志文件?
答案 1 :(得分:1)
请参阅此问题:WCF MSMQ consumer thread count
很高兴这有帮助!