簡體   English   中英

SubscribeToShard 命令異常

[英]Exception on SubscribeToShard Command

我正在嘗試訂閱來自 Kinesis Shard 的事件。 但是SubscribeToShardCommand的執行掛了 5 分鍾(訂閱超時),然后拋出錯誤:

(node:2667) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token  in JSON at position 0
    at JSON.parse (<anonymous>)
    at /home/mjpolak/Documents/company/project/node_modules/@aws-sdk/client-kinesis/protocols/Aws_json1_1.ts:4020:19
    at processTicksAndRejections (internal/process/task_queues.js:88:5)
    at Object.deserializeAws_json1_1SubscribeToShardCommand (/home/mjpolak/Documents/company/project/node_modules/@aws-sdk/client-kinesis/protocols/Aws_json1_1.ts:2583:21)
    at /home/mjpolak/Documents/company/project/node_modules/@aws-sdk/middleware-serde/src/deserializerMiddleware.ts:20:18
    at /home/mjpolak/Documents/company/project/node_modules/@aws-sdk/middleware-signing/src/middleware.ts:26:22
    at StandardRetryStrategy.retry (/home/mjpolak/Documents/company/project/node_modules/@aws-sdk/middleware-retry/src/defaultStrategy.ts:125:38)
    at /home/mjpolak/Documents/company/project/node_modules/@aws-sdk/middleware-logger/src/loggerMiddleware.ts:21:20
    at /home/mjpolak/Documents/company/project/kinesis-subscribe.ts:85:29

我正在尋找可以讓我成功訂閱的幫助。

完整代碼:

const { StreamDescription } = await client.send(
        new DescribeStreamCommand({
            StreamName: 'streamName',
        }),
    );
    const { StreamARN } = StreamDescription;

    const { Consumers } = await client.send(
        new ListStreamConsumersCommand({
            StreamARN,
        }),
    );

    let Consumer = Consumers.find((x) => x.ConsumerName == 'tester');

    if (Consumer == null) {
        const consumerData = await client.send(
            new RegisterStreamConsumerCommand({
                ConsumerName: 'tester',
                StreamARN,
            }),
        );
        Consumer = consumerData.Consumer;
    }

    console.log(`StreaARM: ${StreamARN}`);

    console.log(`Consumer: ${Consumer.ConsumerARN}`);

    const { EventStream } = await client.send(
        new SubscribeToShardCommand({
            ConsumerARN: Consumer.ConsumerARN,
            ShardId: 'shardId-000000000000',
            StartingPosition: {
                Type: 'LATEST'
            },
        }),
    );
    console.log("Consuming");

通過調查通過 Wireshark 的通信,我可以確認 HTTP 連接已建立,並且 AWS 將一些數據推送到我的客戶端。 所以我猜測客戶端庫中有某種錯誤會保留塊而不是返回結果。

我還在 SDK 存儲庫上創建了錯誤: https://github.com/aws/aws-sdk-js-v3/issues/2418

Logs shows that error is thrown for JSON parsing and this occurs when you are receiving HTML or XML format response but expected is JSON response. 嘗試在控制台上記錄響應並查看其格式是否正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM