kafka使用总结

场景描述:

系统新增数据需要通过Kafka平台进行推送,第三方消费消息

Kafka的单台搭建:

1.服务器端需要安装jdk, kafka 2.6.0(使用Kafka自带zookeeper),JDK配置对应的环境变量,kafka使用默认配置;

2.启动顺序为:zookeeper启动之后 启动Kafka;
关闭顺序为:Kafka关闭之后 关闭zookeeper;

3.后台zookeeper启动:(到Kafka安装目录)

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

4.后台Kafka启动:(到Kafka安装目录)

bin/kafka-server-start.sh -daemon config/server.properties

5.创建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic name --partitions 1 --replication-factor 1

6.查看该topic的状态

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic name

7.需要测试的话,可以在Kafka上新开连接窗口 创建生产者和消费者
生产者:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic name

消费者:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic name --from-beginning

生产者代码:

静态初始化生产者

// topic名称
	private static final String TOPIC = "OAMessage";
	// broker list地址
	private static final String Broker_List = "10.31.245.5:9092";
	// kafka 生产者
	private static KafkaProducer<String, String> producer = null;

	// 初始化生产者
	static {
		Properties configs = initConfig();
		producer = new KafkaProducer<String, String>(configs);
	}

	private static Properties initConfig() {
		Properties properties = new Properties();
		properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, Broker_List);
		properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
		properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
		return properties;
	}

在具体方法中使用生产者推送消息

new Thread(()-> {                        	
			Map<String, Object> map = new HashMap<>();
			map.put("key", "addUnit");
			map.put("value", accountAdd);
			String msg = JSON.toJSONString(map);
			ProducerRecord<String, String> record = new ProducerRecord<String, String>(TOPIC, msg);
			producer.send(record);
		}).start();

kafka连接错误:属于主机名解析错误

报错 Error connecting to node 0 at XXXXXXXXX:9092:

原因分析:不能解析XXXXXXXXX主机名
Kafka连接原理:首先连接 127.0.0.1:9092
再次连接返回的是 host.name = XXXXXXXXX
最后持续连接的是advertised.host.name = XXXXXXXXX

解决办法:添加hosts文件域名解析
hosts文件增加

127.0.0.1  XXXXXXXXX

用cmd ping一下XXXXXXXXX试试 如果可以ping通即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值