Kafka producer

该代码示例展示了如何配置一个KafkaProducer来连接到使用SSL安全协议的Kafka集群,并使用Avro序列化器与SchemaRegistry进行交互。配置包括设置Bootstrap服务器、Serializer类、SchemaRegistryURL、认证信息以及SSL相关参数。
摘要由CSDN通过智能技术生成

import java.util.Properties

import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}

import org.apache.kafka.common.serialization.StringSerializer

import io.confluent.kafka.serializers.{KafkaAvroSerializer, AbstractKafkaAvroSerDeConfig}

import javax.net.ssl.SSLContext

import org.apache.kafka.common.config.SslConfigs

import org.apache.kafka.common.security.auth.SecurityProtocol

import io.confluent.kafka.ssl.{SslConfig, SslFactory}

 

val props = new Properties()

props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka.example.com:9093")

props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, classOf[StringSerializer].getName)

props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, classOf[KafkaAvroSerializer].getName)

props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, "https://schemaregistry.example.com:8081")

props.put(AbstractKafkaAvroSerDeConfig.BASIC_AUTH_CREDENTIALS_SOURCE, "USER_INFO")

props.put(AbstractKafkaAvroSerDeConfig.USER_INFO_CONFIG, "username:password")

 

val sslConfig = SslConfig(props)

val sslFactory = new SslFactory(sslConfig)

val sslContext = sslFactory.createSSLContext()

 

props.put(SslConfigs.SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_CONFIG, "")

props.put(SslConfigs.SSL_SOCKET_FACTORY_CLASS_CONFIG, sslFactory.getClass.getName)

props.put(SslConfigs.SSL_KEYSTORE_LOCATION_CONFIG, "/path/to/keystore.jks")

props.put(SslConfigs.SSL_KEYSTORE_PASSWORD_CONFIG, "password")

props.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, "/path/to/truststore.jks")

props.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, "password")

props.put(SslConfigs.SSL_ENABLED_PROTOCOLS_CONFIG, "TLSv1.2")

 

props.put(ProducerConfig.ACKS_CONFIG, "all")

props.put(ProducerConfig.RETRIES_CONFIG, "10")

props.put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, "5")

props.put(ProducerConfig.CLIENT_ID_CONFIG, "my-producer")

 

val producer = new KafkaProducer[String, Any](props)

val record = new ProducerRecord[String, Any]("test", "key", Map("field1" -> "value1", "field2" -> 2))

producer.send(record)

 

producer.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值