/**
* 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