第一次用kafka

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhoujiaping123/article/details/83036602

maven配置依赖

<dependency>
			<groupId>org.apache.kafka</groupId>
			<artifactId>kafka-clients</artifactId>
			<version>0.9.0.1</version>
			<exclusions>
			    <exclusion>
			        <groupId>org.slf4j</groupId>
			        <artifactId>slf4j-api</artifactId>
			    </exclusion>
			</exclusions>
		</dependency>

测试代码

/**
 * 
 *  测试kafka 比如往kafka里面放置消息,查看kafka里面是否有需要的消息。
 *  注意:为了不影响真正的消费者,要设置自动提交为false,并且不要手动提交。
 */
public class KafkaTest {
	@Test
	public void testProducer() throws InterruptedException, ExecutionException {
		Properties prop = initProp();
		KafkaProducer<String, String> producer = new KafkaProducer<>(prop);
		String value = "hello kafka";
		ProducerRecord<String, String> record = new ProducerRecord<String, String>("topic-mytopic", value);
		Future<RecordMetadata> f = producer.send(record);
		RecordMetadata meta = f.get();
		System.out.printf("produce %s %s", meta.offset(), meta.topic());
		producer.close();
	}

	@Test
	public void testComsumer() {
		Properties prop = initProp();
		try (KafkaConsumer<String, String> consumer = new KafkaConsumer<>(prop)) {
			consumer.subscribe(Lists.newArrayList("topic-mytopic"));
			consumer.seekToBeginning();
			while (true) {
				ConsumerRecords<String, String> recs = consumer.poll(10000);
				recs.forEach(rec -> {
					System.out.println();
					System.out.printf("offset=%s, value=%s", rec.offset(), rec.value());
					System.out.println();
				});
				// consumer.commitSync();
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	private Properties initProp() {
		Properties prop = new Properties();
		prop.setProperty("bootstrap.servers", "ip1:port,ip2:port,ip3:port");
		prop.setProperty("group.id", "my-group");
		prop.setProperty("enable.auto.commit", "false");
		prop.setProperty("session.timeout.ms", "15000");
		prop.setProperty("auto.offset.reset", "earliest");
		prop.setProperty("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
		prop.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
		prop.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
		prop.setProperty("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
		prop.setProperty("value.deserializer.encoding", "UTF-8");
		return prop;
	}
}

猜你喜欢

转载自blog.csdn.net/zhoujiaping123/article/details/83036602