我有一个NServiceBus应用程序,由于某些外部事件没有发生,可能无法处理给定的消息。因为这个其他事件不是NSB事件,所以我无法正确实施传奇。
然而,我不是仅仅重新排队消息(这会导致循环直到发生外部事件),而是将消息包装在另一条消息(DelayMessage)中并对其进行排队。 DelayMessage由不同的服务获取并放置在数据库中,直到重试间隔到期。此时,延迟服务将消息重新排入原始队列,以便进行另一次尝试。
然而,如果外部事件仍然没有发生,这可能不止一次发生,并且在甚至从未发生的情况下,我想限制消息的往返次数。这意味着DelayMessage具有MaxRetries属性,但是当延迟服务将原始消息排队以进行重试时,该属性会丢失。
我错过了哪些其他选择?我很高兴接受这个问题有一个完全不同的解决方案。