import java.util.concurrent.CountDownLatch;
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.admin.*;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.config.SaslConfigs;
import org.apache.kafka.common.serialization.StringDeserializer;
public class KafkaConsumeTest implements Runnable {
private final KafkaConsumer<String, String> consumer;
private ConsumerRecords<String, String> msgList;
private final String topic;
private static final String GROUPID = "MY_GROUP_ID";
private KafkaAdminClient adminClient;
private String consumeName;
public KafkaConsumeTest(String topicName,String consumeName) {
this.consumeName = consumeName;
String userName = "${projectId}#${net}";
String passWord = "${access-key-id}#${access-key-secret}";
Properties props = new Properties();
props.put("bootstrap.servers", "${hosts}");
props.put("group.id", GROUPID);
props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");
props.put("session.timeout.ms", "30000");
props.put("auto.offset.reset", "earliest");
props.put("key.deserializer", StringDeserializer.class.getName());
props.put("value.deserializer", StringDeserializer.class.getName());
props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_SSL");
props.put(SaslConfigs.SASL_MECHANISM, "PLAIN");
props.put(SaslConfigs.SASL_JAAS_CONFIG,
"org.apache.kafka.common.security.plain.PlainLoginModule " +
"required username=\"" + userName + "\" password=\"" + passWord + "\";");
this.consumer = new KafkaConsumer<String, String>(props);
this.consumer.subscribe(Arrays.asList(topic));
this.adminClient = (KafkaAdminClient) KafkaAdminClient.create(props);
System.out.println("---------开始消费---------");
msgList = consumer.poll(10);
if(null!=msgList&&msgList.count()>0){
for (ConsumerRecord<String, String> record : msgList) {
System.out.println(this.consumeName+"==="+messageNo+" offset==="+record.offset()+"=======receive: key = " + record.key() + ", value = " +
public static void main(String args[]) throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(1);
KafkaConsumeTest test1 = new KafkaConsumeTest("${out-TopicID}","Consume1");
Thread thread1 = new Thread(test1);