-1

Kafka Broker の IBM Bluemix 実装を使用しています。

次のプロパティで KafkaProducer を作成しています。

key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
bootstrap.servers=xxxx.xxxxxx.xxxxxx.xxxxxx.bluemix.net:xxxx
client.id=messagehub
acks=-1
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.truststore.location=xxxxxxxxxxxxxxxxx
ssl.truststore.password=xxxxxxxx
ssl.truststore.type=JKS
ssl.endpoint.identification.algorithm=HTTPS

KafkaProducer<byte[], byte[]> kafkaProducer = 
           new KafkaProducer<byte[], byte[]>(props);

これにより、次の例外が発生しました。

org.apache.kafka.common.KafkaException: org.apache.kafka.clients.producer.internals.DefaultPartitioner は org.apache.kafka.clients.producer.Partitioner のインスタンスではありません

次のブログを読んだ後: http://blog.rocana.com/kafkas-defaultpartitioner-and-byte-arrays新しい API を使用していたにもかかわらず、プロパティ ファイルに次の行を追加しました。

partitioner.class=kafka.producer.ByteArrayPartitioner 

今、私はこの例外を受けています:

org.apache.kafka.common.KafkaException: クラス kafka.producer.ByteArrayPartitioner をインスタンス化できませんでした 引数のない public コンストラクターはありますか?

ByteArrayPartitionerデフォルトのコンストラクターがないようです。ここで何が欠けているのか分かりますか?

ありがとうマドゥ

4

1 に答える 1

0

KafkaProducer API を使用していたので、必要ありませんでした。

partitioner.class=kafka.producer.ByteArrayPartitioner 

財産。問題は、kafkaclient jar のコピーが 2 つあったことです。すべてのライブラリ jar ファイルが外部共有ディレクトリにあるように、インストールを構成しました。しかし、POM 構成エラーのため、war ファイルの lib ディレクトリには kafka クライアントのコピーもありました。この問題を修正したら、うまくいきました。

マドゥ

于 2016-05-01T22:12:57.920 に答える