当前位置: 首页 > 知识库问答 >
问题:

SQS-安排要取消传递的消息

司马作人
2023-03-14

我想在SQS上发布一条消息,并在几个小时后处理该消息

如何根据某些属性安排消息传递或从SQS中选择消息?

我已经实现了一个SQS消费者,但我正在接收来自SQS队列的每条消息。有可能在SQS上实现类似的功能吗?我正在考虑接收每条消息,如果还没到处理该消息的时间,就再次发送到队列。

共有1个答案

劳烨
2023-03-14

SQS中有一个叫做延迟队列的功能,如果您在队列上设置了延迟,那么只有在延迟持续时间过去后,队列中的任何消息才对消费者可用。然而,您可以在那里设置的最大延迟为15分钟,如果您正在寻找几个小时的延迟,这可能不直接适用于您。

另一个选项是将消息的可见超时设置为高于所需的延迟时间。然后,当您阅读消息时,您可以获得消息时间戳。如果您的延迟还有一段时间,那么您可以在剩余的时间内让您的消费者Hibernate,并且在它醒来后,您可以处理该消息。然而,这不是一个推荐的方式,而且效率非常低,因为您的线程被阻塞了。事实上,如果您的延迟还有一段时间,那么您只需将消息保存在本地列表/数组中,并检查其他消息,然后在延迟后处理此消息。但是所有这些都需要整个逻辑驻留在你的代码中,你不会从AWS得到任何现成的功能

 类似资料:
  • 由于内容脚本在网页而不是扩展程序的上下文中运行,因此它们通常需要某种与扩展程序其余部分进行通信的方式。例如,RSS 阅读器扩展程序可以使用内容脚本来检测页面上 RSS 摘要的存在,然后通知后台页面以显示该页面的操作图标。 扩展及其内容脚本之间的通信使用消息传递来实现。任何一方都可以监听从另一端发送的消息,并在同一通道上进行响应。消息可以包含任何有效的 JSON 对象(空,布尔值,数字,字符串,数组

  • ms tcp nodelay 描述: 在信差的 TCP 会话上禁用 nagle 算法。 类型: Boolean 是否必需: No 默认值: true ms initial backoff 描述: 出错时重连的初始等待时间。 类型: Double 是否必需: No 默认值: .2 ms max backoff 描述: 出错重连时等待的最大时间。 类型: Double 是否必需: No 默认值: 15

  • 消息传递 目录 一次简单的请求 h3Name 长时间保持连接 h3Name 扩展之间的消息传递 h3Name 安全策略 h3Name 范例 h3Name API reference Properties propertyName Methods methodName Events eventName Types id For information on how to use experiment

  • 我有一个工作人员运行在弹性Beanstalk上,它通过来自队列的消息接受POST请求。这些消息触发了耗时数分钟(有时甚至数小时)的长操作,并且该操作必须只执行一次。 问题是,当我登录到worker控制台查看进程时,消息似乎每分钟都在一遍又一遍地传递(接收请求触发的方法每分钟都被调用)。我怎样才能摆脱这种行为呢? 我阅读了文档,并将服务队列和死信队列的可见超时周期都设置为最大值(12小时)。然而,这

  • 我正在使用AWS sdk开发基于SQS的队列pub-sub。 在非常基本的原型中,我将消息并发地推送到我已经创建的队列中。但是,如何才能确定我的消息正在被推送到队列中呢?

  • 我正在使用apacheMQ作为队列管理器。我使用Spring的DefaultMessageListenerContainer来使用消息。我已经对它进行了配置,以便它有一个事务: