Advanced Spring Boot 4: Event-Driven Architecture (Kafka) · レッスン

プロデューサー設定のカスタマイズ

パフォーマンスと信頼性を最適化するために、acks、バッチサイズ、linger.ms、リトライなどのプロデューサー設定を学びます。

レッスン 3/411 ステップ

「プロデューサー設定のカスタマイズ」はCoddyKit上の無料Advanced Spring Boot 4: Event-Driven Architecture (Kafka)レッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAdvanced Spring Boot 4: Event-Driven Architecture (Kafka)学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Advanced Spring Boot 4: Event-Driven Architecture (Kafka)コースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Why Customize Producer Settings?

When sending messages to Kafka, default settings might not always be ideal. Customizing your producer's configuration is key to optimizing for specific needs.

You can fine-tune your producer for better performance, increased reliability, or optimized throughput, depending on your application's requirements.

Configuring in Spring Boot

In Spring Boot, Kafka producer properties are typically defined in your application.yml (or .properties) file.

All producer-related settings usually start with the prefix spring.kafka.producer. Spring Boot automatically picks these up to configure your KafkaTemplate.

spring:
  kafka:
    bootstrap-servers: localhost:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      # Custom configurations go here

Acknowledgments (`acks`)

The acks (acknowledgments) property determines the level of durability for messages sent by the producer. It controls how many replicas must acknowledge the write before the producer considers the message sent successfully.

  • acks=0: Producer doesn't wait for any acknowledgment. Fastest, but lowest durability (messages might be lost).
  • acks=1: Producer waits for the leader replica to acknowledge the write. Good balance of durability and speed.
  • acks=all: Producer waits for all in-sync replicas to acknowledge. Highest durability, but slowest.

Setting `acks=all`

For critical messages where data loss is unacceptable, you'd typically set acks to all. This ensures that your message is safely replicated before the producer moves on.

Remember, higher durability often means slightly higher latency.

spring:
  kafka:
    producer:
      acks: all # Ensures high durability
      # Other producer configs

Batching: `batch.size` & `linger.ms`

To improve throughput, Kafka producers don't send every message individually. Instead, they batch multiple messages together.

  • batch.size: The maximum amount of data (in bytes) that will be collected before sending a batch. Default is 16KB.
  • linger.ms: The maximum time (in milliseconds) the producer will wait for more messages to accumulate in a batch. Default is 0ms (send immediately).

These two properties work together: a batch is sent when either batch.size is reached OR linger.ms expires.

Optimizing Batch Settings

Adjusting batch.size and linger.ms can significantly impact performance. Larger batches and longer linger times can increase throughput but also slightly increase latency for individual messages.

Here's how you might configure them for better batching:

spring:
  kafka:
    producer:
      batch-size: 32768 # 32 KB (larger batch)
      linger-ms: 50     # Wait up to 50ms (longer wait)
      # Other producer configs

Retries (`retries`)

What happens if a message fails to send due to a transient network issue or a temporary broker unavailability?

The retries property specifies how many times the producer should re-attempt sending a message that failed due to a potentially recoverable error. This greatly enhances the reliability of your message delivery.

Setting `retries`

Setting a reasonable number of retries helps ensure your messages eventually reach Kafka, even if there are temporary glitches.

It's often combined with delivery.timeout.ms, which defines the total time a producer will wait for a message to be delivered, including retries.

spring:
  kafka:
    producer:
      retries: 5 # Try up to 5 times on failure
      delivery-timeout-ms: 120000 # 2 minutes total timeout
      # Other producer configs

Custom Producer in Action

While Spring Boot handles the underlying Kafka client configuration based on your application.yml, let's see how these properties are set directly in a Java Kafka producer. This helps understand the core mechanism.

This example explicitly configures and uses a Kafka producer:

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.Properties;

public class CustomProducerDemo {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        // Custom configurations we discussed
        props.put("acks", "all");
        props.put("batch.size", 32768);
        props.put("linger.ms", 50);
        props.put("retries", 5);

        try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) {
            producer.send(new ProducerRecord<>("custom-topic", "key1", "Hello from CoddyKit!"));
            producer.send(new ProducerRecord<>("custom-topic", "key2", "Another custom message!"));
            producer.flush(); // Ensure all buffered records are sent
            System.out.println("Messages sent with custom configurations.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Check Your Knowledge

You've learned about several key producer configurations. Let's test your understanding!

Recap: Customizing Producers

Great job! You've explored how to customize your Kafka producers for various needs:

  • acks: Controls message durability.
  • batch.size & linger.ms: Optimize for throughput by batching messages.
  • retries: Enhances reliability by re-sending failed messages.

By understanding and adjusting these properties, you can tailor your Spring Boot Kafka applications to meet specific performance and reliability goals. Next, we'll dive into implementing Kafka consumers!

無料で開始

AI チューターと学ぶ Advanced Spring Boot 4: Event-Driven Architecture (Kafka) — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
12
レッスン
48

よくある質問

「プロデューサー設定のカスタマイズ」レッスンは無料ですか?

はい。「プロデューサー設定のカスタマイズ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Advanced Spring Boot 4: Event-Driven Architecture (Kafka)コースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Advanced Spring Boot 4: Event-Driven Architecture (Kafka)コースには全4レッスンが含まれています。

「プロデューサー設定のカスタマイズ」で何を学びますか?

パフォーマンスと信頼性を最適化するために、acks、バッチサイズ、linger.ms、リトライなどのプロデューサー設定を学びます。 ブラウザで直接実行するハンズオンコードでAdvanced Spring Boot 4: Event-Driven Architecture (Kafka)を演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Advanced Spring Boot 4: Event-Driven Architecture (Kafka)を始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAdvanced Spring Boot 4: Event-Driven Architecture (Kafka)は初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「プロデューサー設定のカスタマイズ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAdvanced Spring Boot 4: Event-Driven Architecture (Kafka)レッスンでコードを書いて実行できますか?

はい。すべてのAdvanced Spring Boot 4: Event-Driven Architecture (Kafka)レッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Spring Kafka Starterの統合
  2. KafkaTemplateでメッセージを送信する
  3. プロデューサー設定のカスタマイズ
  4. プロデューサーの送信コールバックと確認応答の処理
← Advanced Spring Boot 4: Event-Driven Architecture (Kafka)に戻る