Как сделать очереди MSMQ быстрее? Есть ли пакетная отправка, так что, по крайней мере, это не 1 на 1?
У меня есть следующий код, который не так медленно, а также не так быстро. Есть ли способ улучшить это? В настоящее время я получаю 1000 сообщений за 5-10 секунд, что, на мой взгляд, пока не идеально.
<?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>
Процессор не связан с ответами, пожалуйста, я имею в виду конфигурацию, как сделать это быстрее
2 ответа
В.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>
Если производительность - это единственное, что вы ищете и готовы пожертвовать постоянством, то я бы посоветовал вам исследовать нетранзакционные очереди памяти. У них нет накладных расходов на транзакции, и, поскольку они не сериализуются на диск, они довольно быстрые. Однако вам все равно придется иметь дело с задержкой в сети, если вы находитесь в распределенной среде.
Надеюсь это поможет,