我正在为 ebXML 消息传递应用程序编写消息处理程序。消息遵循请求-响应模式。这个过程很简单:Sender 发送一条消息,Receiver 接收消息并返回一个响应。到目前为止,一切都很好。
接收者收到消息后,会对消息设置一个响应时间 (TTR)。这可能是几秒钟到几小时/几天的任何时间。
我的问题是:Sender 应该如何处理 TTR?我需要这是一个异步过程,因为 TTR 可能会很长(几天)。我怎样才能以某种方式倒计时,但又不会长时间占用系统资源。可能有大量消息。
我最初的想法是有一个“等待”集合,其中添加了消息 ID,以及它的 TTR 到期时间。然后我会定期轮询收藏。当计时器到期时,消息 Id 将被移动到“过期”集合中,并且消息事务将被终止。
当 Sender 收到响应时,它可以检查“等待”集合中是否有匹配的已发送消息,并确认及时收到响应。然后将从集合中删除该消息以进行下一阶段的处理。
这听起来像一个强大的解决方案吗?我确信这是一个已解决的问题,但是关于这种算法的信息很少。我计划用 C# 实现它,但我认为在这个阶段实现语言有点无关紧要。
感谢您的输入