gpt4 book ai didi

c# - System.Messaging - 为什么 MessageQueue 不提供异步版本的 Send

转载 作者:太空狗 更新时间:2023-10-29 22:22:43 25 4
gpt4 key购买 nike

谁知道为什么 System.Messaging 不提供发送方法的异步版本来将 MSMQ 消息发送到队列。

实际上有异步版本的 Peek 和 Receive 方法(通过可以转换为 C#5 异步可等待方法的 Begin/End 对),但令人惊讶的是,没有提供 BeginSend/EndSend 方法,只有一个 Send 方法,看起来对我来说,这是一个同步阻塞 I/O 调用。

我认为这不是 System.Messaging 的限制,而是 System.Messaging 使用的 native 消息队列 API (mqrt.dll) 之一,它在函数 MQReceiveMessage 中将重叠结构作为参数。与 IOCP 一起使用重叠 I/O,而函数 MQsendMessage不采用这种结构,所以看起来像是一个纯粹的同步调用。

我的问题仍然存在,有人会知道为什么 MessageQueue API 不提供向队列发送消息的异步方式吗?

最佳答案

MSMQ documentation声明发送“始终是异步操作”。自从我使用 MSMQ 以来已经有一段时间了,但是只要您发送 IIRC,消息就会在它尝试通过网络发送之前刷新到本地磁盘。

因此,虽然它不是真正异步的(它必须等待磁盘写入),但它应该相当快。

关于c# - System.Messaging - 为什么 MessageQueue 不提供异步版本的 Send,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19746992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com