問題タブ [sarama]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - カフカからのメッセージを順番に消費するにはどうすればよいですか?
バックグラウンド
プロデューサーはいくつかのデータを生成し、次のように順番に Kafka に送信します。
{uuid: 123 ステータス: 1}
{uuid: 123 ステータス: 3}
ステータス 1 は開始を意味します
ステータス 3 は成功を意味します
私はsarama.NewConsumerGroup(xx, xx, config).Consume(xx, xx, myhandler)を使用してコードを消費します。
次に、msgQueue の値を構造体にデコードし、レコードを mysql に挿入します。
質問
通常、最終的なデータステータスは '3'ですが、時々'1' になることがあります。
また、チャネルmsgQueueのメッセージの順序が固定されていないことがわかりました。
では、データの最終ステータスが3であることを確認するにはどうすればよいでしょうか?
直し方
どのように最適化できるかを確認するには不十分な方法を提供しました。
また、mysql にはuuidの一意の制約インデックスがあります。
データの順序が{uuid: 123 status: 1}、 {uuid: 123 status: 3}の場合、そうです。
データの順序が{uuid: 123 status: 3}、 {uuid: 123 status: 1}の場合、最終ステータスも正しいですが、エラーError 1062: Duplicate entry '123' for key 'unique_index_uuid'が返されます。
美しくない。では、どうすれば最適化できますか、またはそれを行う他の方法はありますか?
go - Shopify/sarama golangライブラリを使用してkafkaのトピックにconsumerGroupを追加するには?
sarama ライブラリには、NewConsumerGroup を初期化するオプションがありますが、それを NewConumer にフックする方法は?