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

对接收相同消息的多个消费者使用Amazon SQS

徐麒
2023-03-14

我有一个主应用程序将消息发送到SQS队列,希望4个消费者应用程序使用相同的消息,并按自己的意愿进行处理

我不确定用于此目的的队列体系结构。

我看到标准SQS、SQS FIFO、(SQS SNSTopic)的选项

对于我想要的功能,似乎(SQS SNS主题)或Kenesis将是一条可行的道路。

但是我也有一个关于标准SQS的问题

我想我是混淆之间的所有选项和压倒了所有的信息可用的队列但仍然感到困惑哪个架构选择

信息的主要来源是亚马逊文档和https://www.schibsted.pl/blog/choosing-best-aws-messaging-service/

我在stackoverflow上遇到了一些问题:

Link\u 1这篇文章回答了在队列中使用多个消费者的问题,但不确定它是否解决了多个消费者使用相同消息的问题

Link_2这个回答了为什么肯西斯可以用于我的场景

有用的信息我用这篇文章只是为了理解不同之处

我真的很感激一些帮助在这方面我试图阅读尽可能多的但肯定会感激如果有人可以帮助我作出正确的决定

共有2个答案

向锦
2023-03-14

根据您的用例,SNS似乎是一个不错的选择,但是如果您想持久化消息,可以将SQS与SNS结合使用。

微生城
2023-03-14

这看起来像是SNS-SQS扇出通知的完美用例-消息被发送到SNS“主题”,SNS将其传递到“订阅”该主题的多个SQS队列。

一些注意事项:

  • 每个消费者应用程序(连接到队列)都将以自己的速率消费——这意味着一个或多个应用程序可能会“落后”。一般来说,只要消费者是独立的,就可以了——队列充当缓冲区,因此不会丢失任何信息

不要担心SQS FIFO,除非您需要它在订购时提供的保证。简单的SQS已经大致排序,并且可以满足大多数用例。

 类似资料:
  • 我是Kafka的新手,我有一个使用Java Apache Camel库实现的Kafka消费者。我发现的问题是-消费者花了很长的时间(>15分钟)来处理很少的消息-这对于我们的用例来说是很好的。 需要一些配置帮助,因为相同的消息会在15分钟后重新发送,如果在15分钟内没有处理(我相信线程控制不会返回)。我想这可能是默认间隔,不确定这是哪一个属性。 那么,我必须在哪里修复配置 生产者级别,以便它不重新

  • 我正在使用spring kafka来消费来自kafka的消息。消费者监听器如下。 应用程序的单个实例,并发数为6。 该主题有6个分区。 从上面的日志中可以清楚地看到,两个用户在完全相同的时间收到了来自分区和偏移量的相同消息。 每个线程继续处理消息。最后,其中一个消费者失败了,错误如下 我知道上面的错误会在有负载或消息处理需要时间时出现。在这种情况下,处理不到一秒钟,kafka主题中的消息不到10条

  • 我是Kafka的新手。我在网上读了很多关于Kafka制作人和Kafka消费者的说明。我成功地实现了前者,它可以向Kafka集群发送消息。然而,我没有完成后一个。请帮我解决这个问题。我看到我的问题像StackOverflow上的一些帖子,但我想更清楚地描述一下。我在虚拟盒子的Ubuntu服务器上运行Kafka和Zookeeper。使用1个Kafka集群和1个Zookeeper集群的最简单配置(几乎是

  • 我运行生产者,它生成N条消息,我在仪表板上看到它们。当我运行接收器时,它会接收来自队列的所有消息,并且队列为空。 我需要有多个生产者生成消息到同一个队列。多个客户从队列中接收消息。消息将被队列TTL删除。但是现在第一个接收者从队列中获取所有消息。我怎么能做到这一点?

  • 我不知道是怎么回事,我的java客户机消费者用@KafkaListener注释后没有收到任何消息。当我通过命令行创建消费者时,它可以工作。同样,Producer也能按预期工作(同样在java中)。有人能帮我理解这种行为吗? application.yml 生产者配置: 消费者配置: 制作人 Spring控制器: 这是我的控制台输出,正如您所看到的,它发送一条消息,但该方法不接收任何内容。如果我没有

  • Kafka消费者不接收在消费者开始之前产生的消息。 ConsumerRecords始终为空 虽然,如果我启动我的消费者比生产者比它接收消息。(Kafka-客户端版本2.4.1)