[英]How do I make the MSMQ queues faster? Is there batch sending so at least it is not 1 by 1?
我有以下代码,它不是那么慢,也不是那么快。 有什么可以改善的吗? 我目前在5到10秒内收到1000条消息,这在我看来还不理想。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<netMsmqBinding>
<binding name="NetMsmqBinding_IProductService"
deadLetterQueue="System"
maxReceivedMessageSize="524288">
<readerQuotas maxDepth="32"
maxStringContentLength="524288"
maxBytesPerRead="524288"/>
<security mode="None"/>
</binding>
</netMsmqBinding>
</bindings>
<client>
<endpoint address="net.msmq://localhost/private/Products" binding="netMsmqBinding"
bindingConfiguration="NetMsmqBinding_IProductService" contract="Products.IProductService"
name="NetMsmqBinding_IProductService" />
</client>
</system.serviceModel>
</configuration>
处理器不相关的答案,我的意思是配置方面如何使其更快
使用.net 4.5,您可以使用压缩,但是这需要从下至上完全重写绑定。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CompressedNetMsmqBinding_IProductService"
>
<binaryMessageEncoding compressionFormat="GZip" >
<readerQuotas maxDepth="32"
maxStringContentLength="524288"
maxBytesPerRead="524288"/>
</binaryMessageEncoding>
<msmqTransport
deadLetterQueue="System"
maxReceivedMessageSize="524288"/>
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="net.msmq://localhost/private/Products" binding="netMsmqBinding"
bindingConfiguration="NetMsmqBinding_IProductService" contract="Products.IProductService"
name="CompressedNetMsmqBinding_IProductService" />
</client>
</system.serviceModel>
</configuration>
如果性能是您唯一想要的并且愿意牺牲持久性,那么我建议您研究非事务性内存队列。 它们没有事务开销,并且由于它们没有序列化到磁盘,因此速度非常快。 但是,如果您处于分布式环境中,则仍然需要处理网络延迟。
希望这可以帮助,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.