2017-08-04 2 views
0

Ich versuche zu lernen und zu verwenden akka-stream-kafka und ging durch seine [Dokumentation] [1]. Im Abschnitt Producer-Einstellungen wird angegeben, dass wir ProducerSettings sowohl programmgesteuert als auch und aus der Konfiguration erstellen können. Es gibt ein Beispiel für Programmatic Construction, aber es gibt kein Beispiel dafür, wie es durch Konfiguration erstellt wird. Die programmatische Konstruktion ist einfach, unten ist ein Beispiel dafür. Jedoch wollte ich die config-Basiskonstruktion verwenden und wollte, dass die Konfiguration von application.conf kommt, da es mir mehr Kontrolle gibt. Ich kann kein Beispiel dafür auf Google finden.Haw zum Erstellen von ProducerSettings aus der Konfiguration (application.conf) in akka-stream-kafka?

val producerSettings = ProducerSettings(system, new ByteArraySerializer, new StringSerializer) 
    .withBootstrapServers("localhost:9092") 

Antwort

1

Die docs nur uns auf Sie den Apache Kafka Javadoc für ProducerConfig, da ist eine Reihe von Konstanten enthält, die Sie als Schlüssel in Ihrem akka.kafka.producer.kafka-clients Config-Abschnitt verwenden können.

die Referenzkonfiguration aus der Dokumentation erweitern, ein Beispiel wäre:

# Properties for akka.kafka.ProducerSettings can be 
# defined in this section or a configuration section with 
# the same layout. 
akka.kafka.producer { 
    # Tuning parameter of how many sends that can run in parallel. 
    parallelism = 100 

    # How long to wait for `KafkaProducer.close` 
    close-timeout = 60s 

    # Fully qualified config path which holds the dispatcher configuration 
    # to be used by the producer stages. Some blocking may occur. 
    # When this value is empty, the dispatcher configured for the stream 
    # will be used. 
    use-dispatcher = "akka.kafka.default-dispatcher" 

    # Properties defined by org.apache.kafka.clients.producer.ProducerConfig 
    # can be defined in this configuration section. 
    kafka-clients { 
    bootstrap.servers = "localhost:9092" 
    enable.auto.commit = true 
    auto.commit.interval.ms = 10000 
    acks = "all" 
    retries = 0 
    batch.size = 16384 
    } 
} 

Der Inhalt Ihrer application.conf-Datei wird standardmäßig von Ihrem ActorSystem geladen werden, so, wenn Sie nach unten, um ein ProducerSettings Objekt erstellen, Es sollte die Konfiguration von akka.kafka.producer dauern. Sie müssen die Konfiguration nicht explizit an den Konstruktor übergeben.

val producerSettings = ProducerSettings(system, new ByteArraySerializer, new StringSerializer) 
+0

Dank für Ihren Kommentar, verstand ich, dass ein Teil, ich wollte wissen, wie diese Config-Datei verwenden, um die 'ProducerSettings' Eigenschaften zu initialisieren/set. – Explorer

+0

Ich habe die Antwort aktualisiert. Im Wesentlichen sollte diese Konfiguration automatisch von Akka geladen werden, keine Notwendigkeit, etwas explizit zu tun. –

+0

es funktionierte, ich hatte keine Ressourcen-Verzeichnis in meinem Klassenpfad. Vielen Dank – Explorer

Verwandte Themen