問題タブ [azure-eventhub]

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.

0 投票する
2 に答える
5493 参照

azure - Microsoft Azure EventHub からイベント数を取得するには?

Microsoft Azure EventHub からイベント カウントを取得したいと考えています。EventHubReceiver.Receive(maxcount) を使用できますが、多数の大きなイベントでは遅くなります。

トリックを行っているように見える NamespaceManager.GetEventHubPartition(..).EndSequenceNumber プロパティがありますが、それが正しいアプローチであるかどうかはわかりません。

0 投票する
2 に答える
974 参照

hadoop - イベント ストリームをコールド ストレージに保存するにはどうすればよいですか?

時間ベースのリテンションを持つイベント ブローカーからのイベント ストリーム (代わりに「メッセージ」または単に「データ」と呼ぶこともできます) があります。イベント ブローカーは、KafkaAmazon Kinesis、またはMicrosoft Event Hubsである可能性がありますが、それが Kafka であるとしましょう。

私の目標は、このイベント ストリームを受け取り、それをコールド ストレージに入れることです。つまり、Hadoop/Spark を介した将来の分析のためにデータを保存します。これは、この「おしゃべりな」イベント ストリームを HDFS の「分厚い」ファイルに変換したいということです。クラウド環境では、HDFS の代わりに S3 または Azure Storage を使用する可能性があります。

また、ソリューションの費用対効果が高いことも望んでいます。たとえば、ディスク容量のコストを削減するために、Avro/ORC などのシリアル化形式を使用しています。私はまた、特定のイベントがコールド ストレージに保持されることを少なくとも 1 回保証するようなものです (1 回限りのボーナス ポイント)。

私の主な質問は次のとおりです。

  • 人々はこの問題をどのように解決していますか?
  • このシナリオを既に処理しているコンポーネントはありますか?
  • 自分でソリューションを開発する必要がありますか?
  • 少なくとも、推奨されるパターンはありますか?
0 投票する
5 に答える
5409 参照

c# - Azure EventHub - イベントを削除するには?

いつものように、私は現在立ち往生しているので、助けていただければ幸いです!!!

新しいプロジェクトがあり、Azure EventHub を使用します。イベント ハブにイベントを追加したり、IEventProcessor(Receiver プロジェクト) を使用してイベントを消費したりできるデモ アプリを作成しました。問題は、レシーバー プロジェクトを実行するたびに、同じイベントが表示されるということです。これらのイベントは、消費後に削除されると期待すべきではありませんか?

Receiver プロジェクトでの例:

Console.WriteLine の後にイベントを削除/削除する方法はありますか、またはメッセージは 1 日保持されますか? Queues を使用すると、完了を知らせることができますが、EventHub を使用するとコマンドが表示されないため、削除/削除するために使用できます。

どんな返信でも大歓迎です。EventHub を使用するように指示されましたが、理由はありません。選択の問題ではありません。

0 投票する
1 に答える
1603 参照

azure - どの Azure .NET SDK EventHubClient インスタンス メソッドがスレッドセーフですか?

EventHubClientを使用して、C# で複数のスレッドからAzure イベント ハブにメッセージを発行するコードを書いています。EventHubClient のドキュメントには、かなり標準的なボイラー プレートが含まれています。

「この型の public static (Visual Basic では共有) メンバーはスレッド セーフです。インスタンス メンバーは、スレッド セーフであるとは限りません。」

スレッドセーフであると私が最も期待する4 つの send メソッドのいずれにも、スレッドセーフに関する追加のドキュメントはありません。send メソッドがスレッドセーフではないと信じていたら、メッセージを送信するたびに新しい EventHubClient インスタンスを作成することになります。基礎となる tcp 接続は明らかに再利用されるため、手順を実行しない限り、オーバーヘッドはそれほど大きくない可能性があります。分割された送信者でも同様の問題が発生しますが、送信者を作成する非同期メソッドがある場合、独自の AMQP 接続が存在する可能性があります。

ドキュメントにもかかわらず、すべてではないにしても、EventHubClient のインスタンス メソッドの一部はスレッド セーフですか?

また、Azure の関係者にとって、これをドキュメントで明確にすることは可能でしょうか? この種のドキュメントの問題 (間違っている可能性が高いと仮定) は、Azure テーブルにも影響を与えるようであり、MSDN ドキュメント内では一般的に一般的です。EventHub に関しては、これはKafkaの明確なスレッド セーフ ステートメントとは対照的であり、AWS Kinesisは少なくともすべてを安全でないと明示的にラベル付けしていません。SDK のオープン ソース部分に EventHubs が見つからなかったため、自分で確認できませんでした。

0 投票する
1 に答える
1578 参照

azure - Azure の EventProcessorHost はいつ IEventProcessor.ProcessEventsAsync を呼び出しますか?

私は Azure EventHub のワーカーを作成しており、EventProcessorHostの上に構築することを期待しています。ただし、一般的な ドキュメントまたは API ドキュメントのいずれにも、関連する可能性のある詳細を見つけることができませんでした。

EventProcessorHost によってIEventProcessor ProcessEventsAsyncが呼び出されるのはいつですか?

このメソッドは、Event Hubs ストリームに新しいメッセージがある場合に呼び出されます。各バッチのすべてのイベントの処理が終了したときにのみチェックポイントを設定してください。

列挙可能なメッセージにいくつかの結果があることはわかっていますが、ドキュメントでは、ProcessEventsAsync への同時呼び出しまたは最初の呼び出しの進行中に 2 番目の呼び出しが予想されるかどうかについては言及されていません。最初の呼び出しが完了していないため、2 番目の呼び出しが完了し、ストリーム内で処理されるよりも先にチェックポイントが実行される可能性があるため、チェックポイントのタイミングに関する指示はあまり意味がありませんが、ドキュメントで確認することは素晴らしいことです。

CreateEventProcessor (一意の場合は IEventProcessor)への各呼び出しの出力は、1 つのパーティションの EventProcessorHost によって使用され、 PartitionContext

同様に、CheckpointAsyncへの呼び出しが、呼び出されるProcessEventsAsyncに何らかの影響を与えるかどうかです。後でチェックポイントを許可するべきではありませんが、合理的な選択であることがわかりました。チェックポインティングのメカニズムについて他にいくつか質問がありますが、これについては別の質問で説明します (リンクはこちら)。

CloseAsync呼び出しが行われた後、さらに ProcessEventsAsync 呼び出しが行われますか(そうではないと思いますが、見つかりませんでした)。ProcessEventsAsync から返された Task を未完了で作成しますか?

つまり、前の呼び出しのタスクが完了するまで、特定のプロセッサに対して ProcessEventsAsync が呼び出されないというのが私にとって理にかなっている答えですが、ドキュメントからこれを確認することはできません。

0 投票する
2 に答える
2798 参照

c# - Azure EventHub のロード テスト

Azure EventHubを使用するアプリケーションを開発しています。これは、多数のイベントを発行および処理するための非常にスケーラブルなソリューションであると主張しています。最終的なソリューションをロード テストして、システム全体が要件に適合するかどうかを確認したいと考えています。スループット ユニットを EventHub に追加して、予想されるイングレスを処理します。

私のクライアントは、EventHub の HTTP エンドポイントを使用してイベントを公開しています。これは、実際には、クライアントがイベントを公開したいときに、次のような特別な URL に HTTPS POST 要求を送信することを意味します。

このサービスをローカル マシンから簡単に負荷テストできます (たとえばApache JMeterを使用) が、残念ながらローカル マシンのリソースが限られているため、サービスをテストするために大きな負荷を生成することはできません。

大きな負荷がかかるとはどういう意味ですか?

1 秒あたりの指定された数のリクエストについてシステムをテストする必要があります。この指定された数は、20,000 から 100,000 の間の量である必要があります。したがって、最悪の場合、100,000 リクエスト/秒でテストする必要があります。

このような大きな負荷を生成できる複数のクラウド負荷テスト ツールがあり、それらは問題ありませんが、テストしたいシステムが自分の所有物であることを確認する必要がある場合、クラウド内の各負荷テスト ツールにはいくつかの確認手順が必要です。(したがって、ロード テスターは WhiteHouse Web サイトに対して DDoS 攻撃を行いません。)

そのためには、通常、テストを実行する前に、ロード テスター ツールによってチェックされる検証トークンを URL にアップロードする必要があります。残念ながら、この場合、EventHub のエンドポイントを制御できないため、トークンを次の場所にアップロードできません。

Azure EventHubs と連携できるクラウドの負荷テスト ソリューションはありますか?

そうでない場合、EventHub ベースのサービスをロード テストするにはどうすればよいですか?

0 投票する
1 に答える
1249 参照

azure - Azure ServiceBus Eventhub、一部のイベント データが期限切れになった場合でも、"オフセット" は引き続き使用可能/永続的ですか?

Azure Service Bus で新しくリリースされた EventHub をテストするためのコードを作成するとき。

オンラインの記事はほとんどなく、msdn にもイベント ハブの詳細に関する豊富なドキュメントがありません。ですから、誰かが私の質問についてあなたの経験を共有してくれることを願っています.

EventHub については、次のステートメントがあります。

  • 「オフセット」を使用して、あるパーティションからイベント データを読み取るときに現在の場所を記憶します。

  • EventHub のイベント データは、構成可能な一定期間後に (自動的に?) 期限切れになります。

私の質問は、offset期限切れの結果として一部のイベント データが削除された場合でも、引き続き使用可能/耐久性があるかどうかです。

たとえば、パーティションの 1 つに次のデータがあります。

処理ロジックが実行された後、 と を処理M1したとしますM2。したがって、オフセットはM2(排他モードを使用する場合) の開始点になります。

しばらくして、その間にサービスがダウンした場合。M1期限切れにより削除されます。したがって、パーティションは次のようになります。

この場合、サーバーが再起動されたとき、以前に保存したオフセットは引き続き読み取りに使用できますM3か?

最も古いイベント データの一部が期限切れになったときにコンシューマー サーバーが eventhub のイベント データを読み取っている場合、実行時にこのケースをイメージすることもできoffsetます。実行時に引き続き利用できますか?

この質問を共有していただきありがとうございます。

0 投票する
1 に答える
1007 参照

azure - 送信前に EventData.GetBytes() を呼び出せないのはなぜですか?

私はAzure Event Hubsを使用していますが、最初にデータを送信してバッチサイズを計算しようとすると、EventDataを呼び出す以下のようなコードがありました。GetBytes

残念ながら、SDK コードで例外が発生します。

メッセージ本文を複数回読み取ることはできません。再利用するには、読み取り後に値を保存します。

GetBytes への最終的に不要な呼び出しを削除したことで、メッセージを送信できるようになりましたが、この例外が発生する理由はかなり不可解です。GetBytes() を連続して 2 回呼び出すと、同じ例外を簡単に再現できますが、1 回呼び出すと、EventData を正常に送信できません。

Messageの下で使用されている可能性が高く、これはMessage.GetBodyドキュメントとして複数回呼び出された場合に例外をスローするように設定されています。ただし、EventData のメソッドGetBodyStreamGetBody w/serializerGetBody、またはGetBytesには、この効果に関するドキュメントはありません。

これは文書化するか、修正する必要があると思います。現在、これは別のスレッドで不愉快な驚きであるためです。

0 投票する
1 に答える
2064 参照

c# - バッチ処理のために EventData のシリアル化されたサイズを決定するにはどうすればよいですか?

Azure EventHubClientのドキュメントには、データのバッチを送信するための2 つの 方法があり、それぞれに以下のコメントがあり、無視された場合はMessageSizeExceededExceptionがスローされます。

eventDataList のシリアル化された合計サイズが、1 つのイベント データ送信のサイズ制限 (デフォルトでは 256k) 未満であることを確認する必要があります。

プログラミングガイドにも同様の警告があります

のシリアル化されたサイズはどのように決定できIEnumerable<EventData> eventDataListますか?

EventDataに渡されるバイトのサイズは、 EventData に問い合わせなければ、簡単に判断できます。ただし、シリアル化された形式の EventData には、サンプルで使用されているパーティション キーユーザー プロパティが含まれていると考えられます。

現在、私の唯一のオプションは、バッチ サイジングに関して保守的であるように見えます。