kafka-producer-SSL

/**
 * kafka生产者,向kafka发送消息
 * */
public class KafkaProductMsg {

    public static void main(String[] args) throws Exception
    {
        Random r = new Random();
        Properties environment  = new Properties();
        InputStream is = KafkaProductMsg.class.getClassLoader().getResourceAsStream("config/application.properties");
        environment.load(is);

        // 配置SSL
        if (null == System.getProperty("java.security.auth.login.config")) {
            System.setProperty("java.security.auth.login.config", environment.getProperty("java.security.auth.login.config"));
        }

        Properties kafkaProps = new Properties();
        kafkaProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_SSL");
        kafkaProps.put(SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG, environment.getProperty("ssl.truststore.location"));
        kafkaProps.put(SslConfigs.SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_CONFIG, "");
        kafkaProps.put(SslConfigs.SSL_TRUSTSTORE_PASSWORD_CONFIG, "KafkaOnsClient");
        kafkaProps.put(SaslConfigs.SASL_MECHANISM, "PLAIN");

        kafkaProps.put("bootstrap.servers", "host1:9093,host2:9093,host3:9093");
        kafkaProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

        String topic = "your-kafka-topic";
        Producer<String, String> producer = new KafkaProducer<String, String>(kafkaProps);

        //不断生成消息并发送
        while (true) {
            String jsonMsg = "your-kafka-messages";

            String[] types = {"LOG_ERROR","PERFORMANCE_ERROR","HTTP_ERROR","JS_ERROR"};
            jsonMsg = String.format(jsonMsg,types[r.nextInt(3)]);

            ProducerRecord<String, String> record = new ProducerRecord<>(topic, jsonMsg);

            //将customer作为消息的值发送出去,KafkaAvroSerializer会处理剩下的事情
            Future<RecordMetadata> rt = producer.send(record);

            System.out.println(rt.isDone()+"---->"+jsonMsg);
            Thread.sleep(1000);
        }
    }
kafka_client_jaas.conf文件:

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="root"
  password="123123"
  serviceName="kafka";
};

SSL一般走外网,如果是阿里云托管的kafka,那么kafka.server=‘外网地址’

 config/application.properties 文件:

#kafka相关配置
kafka.groupid=data-stream-group
kafka.topic=nginx-log-topic
kafka.ssl.open=true
kafka.servers=host1:9092,host2:9092,host3:9092

ssl.truststore.location=/disk/user/xxx/kafka.client.truststore.jks
java.security.auth.login.config=/disk/user/xxx/kafka_client_jaas.conf

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值