我正在为ebXML消息传递应用程序编写Message Handler。该消息遵循请求 - 响应模式。该过程很简单:发件人发送消息,接收者接收消息并发回响应。到目前为止一切都很好。
收到消息后,Receiver会为消息设置一个响应时间(TTR)。这可能是几秒到几小时/天。
我的问题是:发件人应如何处理TTR?我需要这是一个异步过程,因为TTR可能很长(几天)。我怎么能以某种方式倒计时,但不会在很长一段时间内占用系统资源。可能会有大量的消息。
我最初的想法是拥有一个“等待”集合,其中添加了消息ID,以及其TTR到期时间。然后我会定期轮询这个系列。当计时器到期时,消息Id将被移动到“过期”集合,消息事务将被终止。
当发件人收到回复时,它可以检查“等待”收集是否有匹配的已发送邮件,并确认及时收到回复。然后将从集合中删除该消息以进行下一个处理阶段。
这听起来像是一个强大的解决方案。我确信这是一个已解决的问题,但关于此类算法的信息很少。我打算用C#实现它,但是我认为实现语言在这个阶段是无关紧要的。
感谢您的输入
答案 0 :(得分:1)
根据客户端数量,您可以使用持久性JMS队列。每个客户端ID一个队列。消息将保留在队列中,直到客户端连接到它以检索它。
我不了解TTR的目的。是否更像是一个客户端措施,意味着如果在一定时间内无法返回响应,那么只是不打扰发送它?或者是否要在服务器上使用它来安排工作并执行现在所需的操作并推迟请求以及稍后的响应时间?
这是一个广泛的问题......