【发布时间】:2014-01-06 22:11:50
【问题描述】:
我的应用程序的瓶颈变成了使用 MassTransit 通过 MSMQ 发送和接收消息。发送和接收都发生在同一个应用程序中,但通常有太多消息无法使用内存队列。
这是我的简单队列设置:
messageBus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.VerifyMsmqConfiguration();
sbc.UseMulticastSubscriptionClient();
sbc.ReceiveFrom("msmq://localhost/msg_queue");
sbc.Subscribe(subs =>
{
subs.Handler<EventMessage>(msg => Enqueue(msg));
});
});
对于我的实验,MSMQ 目前有大约 100 万条消息,我们不会向它推送任何新消息。我们没有在Enqueue() 做任何工作,除了消息发送的速度。
有了这些信息,我们每秒只能从 MSMQ 获取 150 到 200 条消息,而我希望在没有网络延迟的情况下每秒至少可以获取 1000 条消息。每条消息
我们如何加快 MSMQ 通过 MassTransit 向应用程序传递消息的速度,同时保持队列强制执行的消息排序?
【问题讨论】:
-
你可能已经经历过这个,但有一个look here。我们使用 Websphere MQ,并且可能了解您现在使用 MSMQ 获得的内容。
-
你每秒 1000 条消息的希望是基于什么?
-
如果您当前积压了 百万 条未处理的消息,那么不要指望奇迹,它们的数据存储是可观的。 MSMQ 可以轻松处理每秒数千条消息。前段时间就坏了,最好清理队列,回到合理的起点。
-
@DStanley 这是基于我在研究中阅读的一些博客文章,该文章声称每秒有数千条消息。期望能够在一秒钟内通过队列来回传递 1000 条小消息并不疯狂,尤其是在没有网络延迟的情况下。
-
为了保持消息的顺序,我理解它,以便您同步阅读它们,对吧?瓶颈可能在于消息的处理,而不是读取队列本身吗?
标签: c# .net msmq message-queue masstransit