我正在开发两个使用 MSMQ 作为消息总线机制的应用程序,以便 A 将消息传输到 B。这显然必须是可靠的,因此最初我们选择 MSMQ 来存储和传输消息。
在测试该应用程序时,我们注意到在现实条件下,调用 msmq 以每分钟处理大约 50.000 条消息(对我来说这听起来很低),然后我们很快达到 msmq/storage 目录的最大存储大小(我认为默认为 1.2gb)。
我们可以增加它,但我想知道是否有更好的方法来处理慢速接收者和快速发送者。在这种情况下是否有更好的队列或更好的方法?
实际上,接收速度慢并不是问题,因为 msmq 会将(接收到的)消息保存在存储目录中大约 6 小时或直到服务重新启动。所以基本上,如果我们在 5 分钟内达到 1GB 的阈值,那么在几个小时内我们将达到 terratybes 数据!
最佳答案
请阅读this blog了解 MSMQ 如何使用我在 Microsoft 支持 MSMQ 多年后收集的资源。
它确实涵盖了您需要了解的所有领域。
如果您听说过博客中没有的有关 MSMQ 的信息,那么这几乎肯定是错误的 - 例如 MSMQ 的 1.2GB 存储限制。 msmq\storage 目录的最大大小是硬盘容量——它是一个 NTFS 文件夹!
您应该能够拥有一个包含数百万条消息的队列(假设您有足够的内核内存,如博客中所述)
干杯
约翰·布雷克韦尔
关于c# - 消息队列注意事项 - MSMQ 存储问题杀死当前应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572135/