【发布时间】:2018-05-25 17:28:58
【问题描述】:
我正在从 Ruby 的背景中学习 Erlang,并且在掌握思维过程方面有些困难。我要解决的问题如下:
我需要向 api 发出相同的请求,每次我在响应中收到一个唯一 ID,我需要将其传递给下一个请求,直到没有返回 ID。从每个响应中,我都需要提取某些数据并将其用于其他事情。
首先获取迭代器:
ShardIteratorResponse = kinetic:get_shard_iterator(GetShardIteratorPayload).
{ok,[{<<"ShardIterator">>,
<<"AAAAAAAAAAGU+v0fDvpmu/02z5Q5OJZhPo/tU7fjftFF/H9M7J9niRJB8MIZiB9E1ntZGL90dIj3TW6MUWMUX67NEj4GO89D"...>>}]}
解析出 shard_iterator..
{_, [{_, ShardIterator}]} = ShardIteratorResponse.
向 kinesis 请求流记录...
GetRecordsPayload = [{<<"ShardIterator">>, <<ShardIterator/binary>>}].
[{<<"ShardIterator">>,
<<"AAAAAAAAAAGU+v0fDvpmu/02z5Q5OJZhPo/tU7fjftFF/H9M7J9niRJB8MIZiB9E1ntZGL90dIj3TW6MUWMUX67NEj4GO89DETABlwVV"...>>}]
14> RecordsResponse = kinetic:get_records(GetRecordsPayload).
{ok,[{<<"NextShardIterator">>,
<<"AAAAAAAAAAFy3dnTJYkWr3gq0CGo3hkj1t47ccUS10f5nADQXWkBZaJvVgTMcY+nZ9p4AZCdUYVmr3dmygWjcMdugHLQEg6x"...>>},
{<<"Records">>,
[{[{<<"Data">>,<<"Zmlyc3QgcmVjb3JkISEh">>},
{<<"PartitionKey">>,<<"BlanePartitionKey">>},
{<<"SequenceNumber">>,
<<"49545722516689138064543799042897648239478878787235479554">>}]}]}]}
我正在苦苦挣扎的是如何编写一个循环,该循环不断地到达该流的 kinesis 端点,直到没有更多的分片迭代器,也就是我想要所有记录。因为我不能像在 Ruby 中那样重新分配变量。
【问题讨论】:
标签: erlang