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

我应该向AWS SQS FIFO队列添加死信队列和/或消息组ID吗?

冀望
2023-03-14

我有一个AWS SQS FIFO队列来处理传入的一系列消息。理想情况下,我的消费者(Lambda)将以一定的节奏检索已排序的消息,并尝试重新处理它们。我的问题是是否应该html" target="_blank">添加死信队列?

  • 我想按顺序处理SQS上的消息,如果不处理,消息组中的第一条消息似乎会阻止该组中的所有其他消息。
  • 我目前将消息组ID都设置为相同的内容,尽管有些消息并不真正依赖于订单

当前设置{1,A组}{2,A组}{3,A组}

我是否应该设置消息组ID,使其变为{第一,组A}{第二,组A}{第三,组B},以便即使第一条未能处理,也可以处理第三条消息?

我是否应该进一步设置死信队列,以便有另一个队列将尝试几次后无法正确处理的消息放在一边,这样它就不会占用我的机上消息限制?

共有1个答案

印季
2023-03-14

您应该将相同的MessageGroupID分配给任何必须严格按照相对顺序处理的消息。

如果您的消息不依赖于其他消息,那么它们应该具有不同的MessageGroupID。

我想举的例子是一个发送GPS坐标的车队。为了在地图上正确显示特定总线的所有位置,需要对其进行处理,但可以按任何顺序处理来自不同总线的消息。因此,每个总线都应该有自己的消息组ID。

 类似资料:
  • 死信队列(Dead Letter Queue)本质上同普通的Queue没有区别,只是它的产生是为了隔离和分析其他Queue(源Queue)未成功处理的消息。 创建死信队列的方法参见createQueue() API,与创建普通队列无异, 死信队列不可调用deadMessage(), deadMessageBatch API,其他操作都与对普通Queue的操作无异。 为了将源Queue的未能成功处理

  • 对于异步的触发器,平台会对函数失败的任务进行最多3次重试。 在新建触发器的时候,为触发器配置一条死信队列,从用户的EMQ队列中选择一条,用于接收函数失败的任务。 在设置死信队列前,请对group: CIf76b0600-24e9-42c4-acf3-d491fbd9fd71​ 授予 FULL_CONTROL 权限,若不授予权限,平台将丢弃失败的任务信息。 消息的内容如下,以后可能增加字段,请用户在

  • 为什么已经拥有了共享内存时需要消息队列呢? 这将是多种原因,让我们将其分解为多个点来简化 - 据了解,一旦消息被一个进程接收到,它将不再可用于任何其他进程。 而在共享内存中,数据可供多个进程访问。 如果想使用小信息格式进行通信。 当多个进程同时进行通信时,共享内存数据需要同步保护。 使用共享内存的写入和读取频率很高,那么实现功能将会非常复杂。 在这种情况下不值得使用。 如果所有的进程不需要访问共享

  • 一、消息模型 点对点 发布/订阅 二、使用场景 异步处理 流量削锋 应用解耦 三、可靠性 发送端的可靠性 接收端的可靠性 参考资料 一、消息模型 点对点 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 发布与订阅模式和观察者模式有以下不同: 观察者模式中,观察者和主题都知道对方的存在;

  • 一个线程会从消息队列中收取消息,另一个线程会定时给消息队列发送普通消息和紧急消息 一个线程会从消息队列中收取消息,另一个线程会定时给消息队列发送普通消息和紧急消息 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: *

  • 消息队列接口 结构体 struct   rt_messagequeue   消息队列控制块 更多...   类型定义 typedef struct rt_messagequeue *  rt_mq_t   消息队列类型指针定义   函数 rt_err_t  rt_mq_init (rt_mq_t mq, const char *name, void *msgpool, rt_size_t msg_