gpt4 book ai didi

.net - 我应该什么时候调用 MessageQueue.EndReceive()?

转载 作者:可可西里 更新时间:2023-11-01 11:39:17 25 4
gpt4 key购买 nike

我一直在查看处理来自 MSMQ 的消息的服务的示例代码。在代码中,在 ReceiveCompletedEventHandler 的开头立即调用 EndReceive() 方法,然后它开始实际处理消息的任务。只是我,还是这完全忽略了 MSMQ 可靠性的要点? EndReceive() 难道不应该只在消息被完全处理后才被调用吗?

最佳答案

EndReceive 仅表示消息已成功传递 - 它并不暗示您是否能够使用它做任何有值(value)的事情。

听起来您正在考虑从 MSMQ 进行异步事务读取,在这种情况下,您只会在完全处理您的消息后完成收据(一劳永逸地从队列中删除消息),无论这在您的上下文中意味着什么.但是异步事务读取是不可能的 - 请参阅 MSDN documentation :

Do not use the asynchronous call BeginReceive with transactions. If you want to perform a transactional asynchronous operation, call BeginPeek, and put the transaction and the (synchronous) Receive method within the event handler you create for the peek operation.

关于.net - 我应该什么时候调用 MessageQueue.EndReceive()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4218370/

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