【问题标题】:Amazon-Kinesis: Put record to every shardAmazon-Kinesis:将记录放入每个分片
【发布时间】:2016-01-19 17:44:11
【问题描述】:

我有一个由多个分片组成的 Amazon Kinesis 流。分片的数量,因此消费者的数量,不是一个常数。

我希望向流中的每个消费者广播一种不常见的事件类型。

生产者有没有办法广播记录,即发现碎片并将记录放在每个碎片上?

【问题讨论】:

  • 您问题中的“消费者”一词含糊不清。你的意思是“每个消费者应用程序”还是“每个工作线程在一个应用程序中监听一个分片”?
  • 我有一个应用程序和该应用程序的多个实例。说 4,我希望 4 个实例使用相同的消息,如何在 kinesis 数据流中实现这一点

标签: java sharding amazon-kinesis


【解决方案1】:

你可以做到!有点……

它使用参数“ExplicitHashKey”的技巧。

这可以让您设置用于记录的哈希键,因此可以让您选择您的数据正在进行的分片。

然后你可以调用

aws kinesis describe-stream --stream-name name-of-your-stream

获取有关每个分片的信息,包括每个分片所涵盖的哈希范围。

然后您只需将数据发送到每个分片(使用 PutRecord 或 PutRecords)就可以了。

不幸的是,没有“广播”,但您可以轻松编写一个 Lambda,使用 ExplicitHashKey 参数将相同的数据发送到每个分片。

另一种解决方案是使用单独的流并写入每个流。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    相关资源
    最近更新 更多