01. はじめにApache Kafka はオープンソースのメッセージング エンジン システムです。プロジェクトにおけるその主な役割は、ピーク負荷を軽減し、谷を埋めて分離することです。この記事では、Apache Kafka 用の Golang クライアント ライブラリである Sarama のみを紹介します。 Sarama は、Apache Kafka 0.8 以降用の MIT ライセンスの Golang クライアント ライブラリです。 Apache Kafka サーバーに慣れていない場合は、まず公式ドキュメントの「Getting Started」セクションを読むことをお勧めします。この記事では、Apache Kafka 2.8 バージョンを使用します。
02. プロデューサーSarama ライブラリの AsyncProducer または SyncProducer を使用してメッセージを生成できます。ほとんどの場合、メッセージを生成するには AsyncProducer を使用することをお勧めします。チャネルを通じてメッセージを受信し、バックグラウンドで可能な限り効率的に非同期的にメッセージを生成します。 SyncProducer は、Kafka メッセージを送信した後、ACK 確認を受信するまでブロックします。 SyncProducer には 2 つの注意点があります。一般的に効率が低く、実際の耐久性の保証は Producer.RequiredAcks の構成値によって異なります。構成によっては、SyncProducer によって確認されたメッセージが失われる場合もありますが、使用方法はより簡単になります。 読者の理解を深めるために、この記事では SyncProducer をプロデューサーとして使用する方法を紹介します。 AsyncProducer をプロデューサーとして使用する方法を知りたい読者は、公式ドキュメントを参照してください。 SyncProducer をプロデューサーとして使用するサンプル コード:
上記のコードを読むと、ブローカーのアドレスと構成情報を指定して、NewSyncProducer() を呼び出して新しい SyncProducer を作成します。 SendMessage() を呼び出すと、指定されたメッセージが生成され、生成が成功したか失敗したかの場合にのみ戻ります。生成されたメッセージのパーティションとオフセットを返します。メッセージの生成が失敗した場合はエラーを返します。 リークを回避するには、プロデューサーで Close() を呼び出す必要があることに注意することが重要です。スコープ外になったときに自動的にガベージ コレクションされない可能性があるためです。 03. 消費者Sarama ライブラリの Consumer または ConsumerGroup API を使用してメッセージを消費できます。読者の理解を容易にするために、この記事では Consumer を使用してメッセージを消費する方法を紹介します。 Consumer は、ブローカーからの Kafka メッセージを処理する PartitionConsumers を管理します。 メッセージを消費するコンシューマーのサンプル コード:
上記のコードを読むと、ブローカーのアドレスと構成情報を指定して、NewConsumer() を呼び出して新しいコンシューマーを作成します。トピック、パーティション、オフセットを指定して、ConsumePartition() を呼び出して PartitionConsumer を作成します。 PartitionConsumer は、指定されたトピックとパーティションからの Kafka メッセージを処理します。 リークを防ぐために、consumer とpartitionConsumer で Close() を呼び出す必要があることに注意することが重要です。スコープ外になったときに、自動的にガベージ コレクションされない可能性があるためです。 04. 結論この記事では主に、Apache Kafka の Golang 言語クライアント ライブラリ Sarama を使用して Kafka メッセージを生成および消費する方法を紹介します。生産者と消費者の両方に対して簡単な例を示します。さらに、Sarama ライブラリは他の多くの API も提供します。興味のある読者は、公式ドキュメントを読んで詳細を確認してください。 |
>>: Tencent Qianfanと提携し、SalesEasy PaaSプラットフォームが企業のアプリケーションのカスタマイズを支援
今、SEO業界に参入しようと言うと、他の人から強く思いとどまられるでしょう。なぜなら、現状では、情報...
rack.sx は、2002 年からインターネット業界に携わっていると主張しています。ITDataT...
インターネットが人々の生活にますます溶け込むにつれて、あらゆる業界が知らず知らずのうちにインターネッ...
これまで、SEO について話すとき、それは主に、特定のキーワードで検索したときに自分の Web サイ...
secureragon はトップクラスの VPS 業者です。リソースをいかにケチっているかがよくわか...
liquidweb.com は、19 年の歴史を持つ有名なハイエンド (安物ではない)ホスティング ...
最近、ウェブマスターの間で「Baiduスナップショット」という話題が話題になっています。Baiduス...
新浪科技は4月3日早朝、恒生電子が発表した発表によると、ジャック・マーは浙江栄鑫ネットワークテクノロ...
品質は、検索エンジンマーケティング (SEM) において非常に重要な要素です。アカウント全体の最適化...
pzea は割引を提供しています: シンガポール VPS、香港 VPS、日本 VPS はすべて、月払...
A5ウェブマスターネットワーク(www.admin5.com)は4月4日、中国のビットコイン取引プラ...
[51CTO.comより引用] 2020年のCOVID-19パンデミックの発生と米中貿易戦争の激化に...
[[279233]] API は、モジュールまたはサブシステム間の相互作用のためのインターフェース定...
みなさんこんにちは。私は次男です。 「トロイの木馬 - 図解 VXLAN コンテナ ネットワーク通信...
クラウドへの移行は、企業のデジタル構築における新たな標準となっています。企業はクラウドでのイノベーシ...