0

我对 WCF 和多线程有一些疑问。我的计划是将项目放置到线程池中,并让它处理来自 MSMQ 队列的消息。我还将在 WAS 中托管 WCF。

我想知道此时线程将如何工作。例如消息将被 WCF 绑定到 MSMQ 队列拾取,我知道 WAS 将在需要时启动服务。但是假设我们有 100 条消息要处理(例如每秒 100 条消息)——这些消息会以线程方式还是单线程方式传递?

如果以线程方式,那么如何最好地提交或中止事务?有什么特别的考虑吗?

很抱歉这些问题 - 只需要澄清这一点。

4

1 回答 1

1

目前尚不清楚“将项目放置到线程池中”的作用,但在 WCF 端,使用netMsmqBinding与其他 WCF 绑定类似的方式处理“调用”的服务。不同之处在于“调用”实际上是队列中的 MSMQ 消息。

这篇关于 netMsmqBinding的文章非常清楚地解释了绑定的工作原理。如果您使用其默认 InstanceContext 设置配置 WCF 服务(每个调用或每个会话,具体取决于 .NET 版本),则服务实例将从队列中提取消息,就好像它们每个都是标准调用一样。MSMQ 和 WCF 中有一些设置会影响此行为以使消息按顺序处理,但这不是默认设置。

让 WCF 为您处理多线程,方法是将服务设置为每次调用(或每个会话),对于事务,请查看MSDN 中此示例中的代码以了解如何使用它们。

于 2012-04-26T18:31:19.897 回答