使用kafka

1:安装Zookeep

2:下载kafka

3:启动Zookeep

4:进入解压/bin目录下kafaka-server-start ../../config/server.properties

5:如远程连接请在server.properties,  
     36 行加入advertised.host.name=本机ip(ipconfig||ifconfig获得的地址)。

6:在POM引入依赖

        <dependencies>
		<dependency>
			<groupId>org.apache.kafka</groupId>
			<artifactId>kafka-clients</artifactId>
			<version>0.11.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.9</version>
		</dependency>
	</dependencies>

6:生产者

package XXXXXXX;

import java.util.Properties;

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;

public class ProducerMain {

	public static void main(String[] args) throws Exception {
		// 配置信息
		Properties props = new Properties();
		props.put("bootstrap.servers", "localhost:9092");
		// 设置数据key的序列化处理类
		props.put("key.serializer",
				"org.apache.kafka.common.serialization.StringSerializer");
		// 设置数据value的序列化处理类
		props.put("value.serializer",
				"org.apache.kafka.common.serialization.StringSerializer");
		// 创建生产者实例
		Producer<String, String> producer = new KafkaProducer<String, String>(props);	
		// 创建一条新的记录,第一个参数为Topic名称
		ProducerRecord record = new ProducerRecord<String, String>("my-topic", "userName", "Angus");
		// 发送记录
		producer.send(record);
		producer.close();
	}

}

7:消费者A

package xxxxxx;

import java.util.Arrays;
import java.util.Properties;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;

public class ConsumerMain {

	public static void main(String[] args) {
		// 配置信息
		Properties props = new Properties();
		props.put("bootstrap.servers", "localhost:9092");
		// 必须指定消费者组
		props.put("group.id", "test4");
		props.put("key.deserializer",
				"org.apache.kafka.common.serialization.StringDeserializer");
		props.put("value.deserializer",
				"org.apache.kafka.common.serialization.StringDeserializer");
		KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
		// 订阅 my-topic 的消息
		consumer.subscribe(Arrays.asList("my-topic"));
		// 到服务器中读取记录
		while (true) {
			ConsumerRecords<String, String> records = consumer.poll(100);
			for (ConsumerRecord<String, String> record : records) {
				System.out.println("这是消费者A,key: " + record.key() + ", value: " + record.value());
			}
		}
	}

}

8: 消费者B

package xxxxxx;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;

/**
 * 消费者
 *
 */
public class ConsumerMainB {

	public static void main(String[] args) {
		// 配置信息
		Properties props = new Properties();
		props.put("bootstrap.servers", "localhost:9092");
		// 指定了不同的消费者组,消息会被广播到所有的消费者实例
		props.put("group.id", "test3");
		props.put("key.deserializer",
				"org.apache.kafka.common.serialization.StringDeserializer");
		props.put("value.deserializer",
				"org.apache.kafka.common.serialization.StringDeserializer");
		KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
		// 订阅 my-topic 的消息
		consumer.subscribe(Arrays.asList("my-topic"));
		// 到服务器中读取记录
		while (true) {
			ConsumerRecords<String, String> records = consumer.poll(100);
			for (ConsumerRecord<String, String> record : records) {
				System.out.println("这是消费者B,key: " + record.key() + ", value: " + record.value());
			}
		}
	}
}



猜你喜欢

转载自blog.csdn.net/merrylilili/article/details/79613130