c# - 我们怎样才能加快从 MSMQ 接收消息的速度?

标签 c# .net msmq message-queue masstransit

我的应用程序的瓶颈已成为使用 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 将消息传递到应用程序的速度,同时保持队列强制执行的消息顺序?

最佳答案

我之前确实解决过类似的问题。如果我没记错的话 我们通过 TimeToBeReceived 指定消息过期时间(从目标队列接收到已发送消息的总时间。默认为 InfiniteTimeout。)。引用这个msdn link .

关于c# - 我们怎样才能加快从 MSMQ 接收消息的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663118/

相关文章:

c# - 如何将错误消息传递给 MVC 5 中的错误 View ?

c# - 使用 Moq 在 ElasticSearch 中模拟单个 Bucket 对象

c# - Enumerable.Single 的错误执行?

WCF net.msmq 服务自动激活

visual-studio-2010 - Microsoft消息队列。是否已弃用?

c# - 删除文件夹项

c# - 更改以特定字母开头的每个单词的颜色

c# - 我如何打印(在新窗口上)两个特定的面板 ID

c# - 测量一个函数所用的时间,不明白为什么时差是负的

.net - 如何在 Azure 应用程序中使用 MSMQ