我们正在使用MSMQ来存储对象。 客户端应用程序(asp.net UI)从队列中读取数据。 我认为有2个案例.Net MessageQueue不直接支持
案例1:从队列中读取对象时。我们需要对对象进行一些处理。 如果处理失败(如果用户关闭浏览器会发生这种情况),那么我们就会释放该对象,因为它已经从队列中读取了,我们还没有完成处理。在MSMQ中是否有一种方法可以指定某个事件将对象放回队列中。
案例2:当从队列中读取对象时,我们如何将对象标记为已读而不将其从队列中删除?
我尝试过Message.BeginPeek,但没有解决问题。
答案 0 :(得分:2)
您需要为此方案使用事务性队列。当您在事务中收到消息时,它将保留在队列中,但不会被其他任何人使用。如果您成功处理了该消息,那么您可以提交将其从队列中删除的事务。如果处理失败,那么您只需中止该事务,该消息将再次可供下一个接收方处理。
您需要使用Receive方法才能从事务性队列中接收消息。