[解決済み] Kafkaで大きなメッセージ(15MB以上)を送信するにはどうすればよいですか?
2022-04-29 01:29:17
質問
Java Producer APIを使用して、Kafka V. 0.8にString-messageを送信しています。
メッセージのサイズが15MB程度になると
MessageSizeTooLargeException
.
を設定しようとしました。
message.max.bytes
を40MBに設定しても、例外が発生します。小さなメッセージは問題なく動作しました。
(例外はプロデューサーで発生します。このアプリケーションにはコンシューマーはありません)。
この例外を取り除くにはどうしたらよいですか?
私のプロデューサー設定例
private ProducerConfig kafkaConfig() {
Properties props = new Properties();
props.put("metadata.broker.list", BROKERS);
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("request.required.acks", "1");
props.put("message.max.bytes", "" + 1024 * 1024 * 40);
return new ProducerConfig(props);
}
エラーログです。
4709 [main] WARN kafka.producer.async.DefaultEventHandler - Produce request with correlation id 214 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
4869 [main] WARN kafka.producer.async.DefaultEventHandler - Produce request with correlation id 217 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5035 [main] WARN kafka.producer.async.DefaultEventHandler - Produce request with correlation id 220 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5198 [main] WARN kafka.producer.async.DefaultEventHandler - Produce request with correlation id 223 failed due to [datasift,0]: kafka.common.MessageSizeTooLargeException
5305 [main] ERROR kafka.producer.async.DefaultEventHandler - Failed to send requests for topics datasift with correlation ids in [213,224]
kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
at kafka.producer.async.DefaultEventHandler.handle(Unknown Source)
at kafka.producer.Producer.send(Unknown Source)
at kafka.javaapi.producer.Producer.send(Unknown Source)
解決方法は?
3つ(または4つ)のプロパティを調整する必要があります。
-
消費者側
fetch.message.max.bytes
- は、コンシューマが取得可能なメッセージの最大サイズを決定します。 -
ブローカー側
replica.fetch.max.bytes
- これにより、ブローカー内のレプリカがクラスタ内でメッセージを送信し、メッセージが正しく複製されることを確認できます。これが小さすぎると、メッセージは決して複製されず、したがって、メッセージがコミットされない(完全に複製されない)ため、コンシューマがメッセージを見ることはありません。 -
ブローカー側
message.max.bytes
- これは、ブローカーがプロデューサーから受け取ることができるメッセージの最大サイズです。 -
ブローカー側(1トピックあたり)。
max.message.bytes
- これは、ブローカーがトピックに追加することを許可するメッセージの最大サイズです。このサイズは圧縮前に検証されます。(デフォルトはブローカのmessage.max.bytes
.)
Kafkaから例外やメッセージ、警告を受け取ることができないので、大きなメッセージを送信するときは、この点を考慮する必要があります。
関連
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] スタックトレースを文字列に変換するにはどうすればよいですか?
-
[解決済み] 整数の左側にゼロを埋め込むにはどうしたらいいですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
スキャナは、タイプに解決することはできません最もルーキー初心者の質問
-
プロローグでのコンテンツは禁止されています
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
Methodのinvokeメソッド実装のJavaリフレクション
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
このラインで複数のマーカーを解決する方法