【发布时间】:2023-03-31 09:23:01
【问题描述】:
我正在尝试实现一个侦听某些消息的队列线程。最快的方法是什么,这是单进程多线程应用程序。 我应该使用 Apache Qpid 吗?还是只是一个普通的 .NET 阻塞队列类(如http://www.eggheadcafe.com/articles/20060414.asp)? 我很高兴听到您在这件事上的经验。
【问题讨论】:
标签: c# multithreading message-queue
我正在尝试实现一个侦听某些消息的队列线程。最快的方法是什么,这是单进程多线程应用程序。 我应该使用 Apache Qpid 吗?还是只是一个普通的 .NET 阻塞队列类(如http://www.eggheadcafe.com/articles/20060414.asp)? 我很高兴听到您在这件事上的经验。
【问题讨论】:
标签: c# multithreading message-queue
我会避免使用任何使用 Thread.Sleep() 的代码。在 .NET 4.0 广泛可用之前,请考虑使用 Joe Duffy 的 BlockingQueue class.
【讨论】:
您需要队列持久化吗?换句话说,如果进程由于某种原因死掉了,你还需要能够继续吗?如果是这样,那会使事情变得非常复杂。如果没有,我会使用常规阻塞队列 - 如果您能够使用 .NET 4.0,请使用 new concurrent collections。这让这一切变得非常容易。
请注意,我的文章中给出的 SwDevMan81 引用的示例是一个非常简单的示例,并且它早于泛型。对于更高质量的实现,您需要一种停止队列、泛型、异常处理等的好方法。我的实现是一个合理的起点,但不应将其视为最终产品。
【讨论】:
查看 John Skeet's生产者消费者示例
【讨论】: