亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AWS Kinesis:確定命名流是否存在

AWS Kinesis:確定命名流是否存在

Go
瀟湘沐 2021-12-20 09:56:05
我的目標是使用 AWS Kinesis API 創建一個具有特定名稱的 Kinesis 流(如果它尚不存在),然后寫入它,無論它是否首先存在。這是我到目前為止想出的。嘗試創建流。如果它失敗并顯示代碼 400 并返回一個請求 ID,那么該流可能已經存在。然后寫入流以確保它在那里。在圍棋中:k := kinesis.New(session.New())_, err := k.CreateStream(&kinesis.CreateStreamInput{    ShardCount: aws.Int64(2),    StreamName: aws.String("stream"),})if err != nil {    if reqerr, ok := err.(awserr.RequestFailure); ok {        if reqerr.RequestID() == "" {            log.Fatal("request was not delivered as it has no ID",                reqerr.Code(),                reqerr.Message(),            )        }        if reqerr.StatusCode() != 400 {            log.Fatal("unexpected status code", reqerr.StatusCode())        }    } else {        log.Fatal(err)    }}// Code 400 + requestID does not necessarily mean that the stream exists// So write to the stream to confirm it exists_, err = k.PutRecord(&kinesis.PutRecordInput{    Data:         []byte("Hello Kinesis"),    PartitionKey: aws.String("partitionkey"),    StreamName:   aws.String("stream"),})if err != nil {    log.Fatal(err)}上面的方法似乎令人費解,更重要的是,我認為它不能有效地匹配我期望的確切錯誤。對錯誤消息進行字符串比較似乎也是一個糟糕的選擇,因為這很容易改變。我想知道是否有更可靠和直接的方法來實現這一目標?列出所有可用的流進行搜索是一件痛苦的事情,因為它是一種線性搜索,并且涉及多個具有新值 的請求ExclusiveStartStreamName。
查看完整描述

1 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

描述流。如果流不存在,則創建流并旋轉等待變為活動狀態。

流創建后,您將無法立即推送到流。它將首先過渡到 CREATING,一段時間(幾秒鐘)后過渡到 ACTIVE。

https://docs.aws.amazon.com/sdk-for-go/api/service/kinesis/Kinesis.html#DescribeStream-instance_method

https://docs.aws.amazon.com/sdk-for-go/api/service/kinesis/Kinesis.html#CreateStream-instance_method

您還可以使用 ListStreams 快速查看所有流的狀態:

https://docs.aws.amazon.com/sdk-for-go/api/service/kinesis/Kinesis.html#ListStreams-instance_method


查看完整回答
反對 回復 2021-12-20
  • 1 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號