【发布时间】:2015-04-30 06:20:02
【问题描述】:
我想知道为什么没有 MSMQ 发送的异步实现?我正在使用.net 4.5。我错过了什么吗?
【问题讨论】:
-
为什么要异步
Send方法?向队列发送内容不应该花费太多时间,以至于需要异步发送。您是否正在尝试向远程队列发送内容?您是否遇到过特定问题,或者您是否试图避免总体上的阻塞?
我想知道为什么没有 MSMQ 发送的异步实现?我正在使用.net 4.5。我错过了什么吗?
【问题讨论】:
Send 方法?向队列发送内容不应该花费太多时间,以至于需要异步发送。您是否正在尝试向远程队列发送内容?您是否遇到过特定问题,或者您是否试图避免总体上的阻塞?
不正确,Send 被阻塞,尽管它只写入本地队列。
在调用MessageQueue.Send(..)之前调用await Task.Yield();。
如果你纯粹使用 async/await,这将对吞吐量产生相当大的影响。
【讨论】:
应该不需要Send 的异步版本,因为Send 是异步的。
来自MSDN
在消息队列中发送消息始终是异步的 手术。当您确定队列已打开时,您可以继续 无需停下来等待回复即可发送消息。
当消息发送到远程计算机上打开的队列时,消息 > 队列将消息存储在本地计算机上的传出队列中。
您是否遇到了特定的性能问题,或者您想使用异步方法以防Send 导致阻塞?
【讨论】: