【发布时间】:2018-09-23 09:24:59
【问题描述】:
我的任务是实现一个分布式排队系统,比如 Amazon SQS。
如果有 GET 请求,我必须将消息从主队列传递给用户,并将消息放入不可见队列中。并且会立即收到一个 DELETE 请求,我应该从隐形队列中删除该消息。
如果没有删除请求,我应该增加重新发送计数并将消息发送回主队列。这将一直发生,直到重新发送计数变为 5,之后我将永久删除该消息。
现在我的疑问是,我怎么知道没有 DELETE 请求,这意味着我应该将消息发送回主队列?
我的程序适用于 DELETE 请求跟随 GET 请求的情况。我正在使用 java 来实现。
【问题讨论】:
-
您应该建立一个请求删除的时间窗口。说30秒。在那之后,系统将像没有收到任何删除一样行事
-
@SharonBenAsher 我对如何实现它感到困惑。你是说我等待大约一分钟然后检查我上次尝试传递的消息是否在隐形队列中,如果是,我应该把它放回去吗?对我来说,这似乎是错误的解决方案。
标签: java service message-queue