0

我正在为 ebXML 消息传递应用程序编写消息处理程序。消息遵循请求-响应模式。这个过程很简单:Sender 发送一条消息,Receiver 接收消息并返回一个响应。到目前为止,一切都很好。

接收者收到消息后,会对消息设置一个响应时间 (TTR)。这可能是几秒钟到几小时/几天的任何时间。

我的问题是:Sender 应该如何处理 TTR?我需要这是一个异步过程,因为 TTR 可能会很长(几天)。我怎样才能以某种方式倒计时,但又不会长时间占用系统资源。可能有大量消息。

我最初的想法是有一个“等待”集合,其中添加了消息 ID,以及它的 TTR 到期时间。然后我会定期轮询收藏。当计时器到期时,消息 Id 将被移动到“过期”集合中,并且消息事务将被终止。

当 Sender 收到响应时,它可以检查“等待”集合中是否有匹配的已发送消息,并确认及时收到响应。然后将从集合中删除该消息以进行下一阶段的处理。

这听起来像一个强大的解决方案吗?我确信这是一个已解决的问题,但是关于这种算法的信息很少。我计划用 C# 实现它,但我认为在这个阶段实现语言有点无关紧要。

感谢您的输入

4

1 回答 1

1

根据客户端的数量,您可以使用持久 JMS 队列。每个客户端 ID 一个队列。消息将保留在队列中,直到客户端连接到它以检索它。

我不理解 TTR 的目的。是否更多的是客户端措施,意味着如果无法在特定时间内返回响应,那么就不要费心发送它?还是在服务器上使用它来安排工作并执行现在需要的操作并推送具有稍后响应时间的请求以便稍后完成?

这是一个广泛的问题...

于 2010-12-06T22:19:49.600 回答