首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查是否调用了DELETE API

如何检查是否调用了DELETE API
EN

Stack Overflow用户
提问于 2018-04-13 05:26:59
回答 1查看 168关注 0票数 1

我的任务是实现一个分布式排队系统,类似于Amazon。

如果有GET请求,我必须将消息从主队列传递给用户,并将消息放在不可见队列中。并且应该立即发出删除请求,而我应该从不可见队列中删除消息。

如果没有删除请求,我应该增加重发计数并将消息发送回主队列。这将发生,直到重发计数变为5之后,我将永久删除该消息。

现在我的疑问是,我怎么知道没有删除请求,这意味着我应该将消息发送回主队列?

我的程序适用于删除请求跟随GET请求的情况。在这个实现中,我使用java。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-13 06:30:47

首先,在设计级别,get和delete应该在一个动作中完成。请注意,在JDKQueuepull()操作将得到和删除。如果您坚持单独的操作,那么至少应该支持一个可选的获取和删除请求类型。

现在,当您想要检测没有发生的动作时,会出现一个问题,因为它可能永远“将来可能会发生”。因此,您需要设置一个时间窗口,确定预期的操作没有发生。

通常要做的是,在将其放入不可见队列(更好的名称是“待定删除请求”队列)之前,将“接收”时间戳附加到请求(以及重新传递计数)中,您可以将请求包装在添加属性的自定义java类中。

事实上,我不认为排队是一个很好的选择,一个集合。当删除请求出现时,需要对请求进行随机访问。因此,也许哈希映射是一个更好的选择。

您需要实现一个计时,它每隔x秒调用一次任务。这些任务将扫描pendingDeleteRequests地图,以查找在允许的时间窗口中没有重新删除并从地图中删除的请求。

最后注意:一些消息传递系统具有“死信”功能,它是发送失败传递通知的目的地。这将有助于调试问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49809861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档