MSMQ – 如何在外部设置消息过期?

如何让MSMQ自动将消息过期,如果他们在队列中等待超过一段时间,比如30分钟?

我们没有控制创build这些消息的系统来设置消息的MaxTimeToReceive属性。

你不能。

超时总是在应用程序创build消息时设置的。 该值由代码提供,或从发件人的队列pipe理器的默认值中获取。 一旦设置和发送,就是这样。

如果你没有控制系统发送消息,那么你运气不好,将不得不提供一个手动清理旧信息的方法。

干杯
约翰·Breakwell

对于Nishkar的问题来说,这可能已经太晚了,但对其他人可能是有用的。

正如John所说,一旦发送消息属性就不能改变。 所以如果你需要这样的东西,唯一的解决办法是使用一个中介队列,你会阅读消息,修改任何你想要的,并发送到原来的目标队列。 由于这是简单的处理,它应该快速工作,而不是30分钟的时间才能收到。 有一点需要注意的是,最终的信息将不会与原来的信息完全相同。 除了您更改的这些属性,MSMQ还将设置新的消息ID,发送时间等。

这是一个额外的步骤,但可以是一个解决scheme,如果你没有任何其他的方式。