将消息放入msmq,消息过期超时

时间:2014-01-10 15:07:18

标签: c# msmq

如果有一种开箱即用的方式将消息放入msmq并且定义了到期时间。 到期时我指的是以下情况:

  • 邮件发件人经常将邮件发送到队列
message 1 published at 1:00
message 2 published at 1:02
message 3 published at 1:04
  • 消息接收方从队列中接收消息并运行时间费用过程
  

消息1在1:00收到并在1:05

处理
  • 通过应用程序逻辑,它可以处理不是特定时间范围的消息
  

我们将超过1分钟的处理消息称为此消息   要求我希望消息2从队列中消失

问题:

  • 我可以通过开箱即用的功能存档吗?
  • 如果没有?这样做的最佳做法是什么?
  • 原则上msmq对于这个用例是正确的技术吗?哪一个更符合要求?

3 个答案:

答案 0 :(得分:6)

Message类具有TimeToBeReceived属性(请参阅MSDN)。我认为它应该符合你的要求。

此外,在我看来,您的系统无法以与生成消息相同的速度使用消息。 在不了解系统的更多细节的情况下很难分辨,但是可能值得探索并行使用消息的可能性(如果你还没有这样做的话)。

答案 1 :(得分:0)

如果您可以访问Producer / Consumer的源代码,则可以共享队列但在内存中并使用LINQ过滤预期时间范围内的消息并处理它们

答案 2 :(得分:0)

System.Messaging.Message类具有TimeToBeReceived的属性,如果超时,将导致消息被忽略(或发布到坏信队列)。

唯一的问题是您必须确保客户端的时间与服务器端的时间同步。