我的应用程序的瓶颈已经变成通过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条消息。每条消息都<2kb。
我们如何加快MSMQ通过MassTransit将消息传递给应用程序的速度,同时保持队列强制执行消息排序?
答案 0 :(得分:1)
之前我曾做过类似的事情。如果我没记错的话,
我们通过TimeToBeReceived
指定了消息到期时间(从目标队列接收已发送消息的总时间。默认为InfiniteTimeout。)。请参阅此msdn link。