Kafka 入门教程之三 生产者配置以及发送信息的方式

这篇文章是关于Kafka 生产者配置以及消息的发送方式进行代码级别的案例分享

kafka 提供了3种发送信息的方式
  • Fire-and-forget
这种方式是不管发送成功与否,客户端都会返回成功。尽管大多数的时候Kafka 在发送失败后,会自己重新自动再一次发送消息,但是也会存在丢失消息的风险
  • Synchronous send
这种方式是同步发送的方式,会等待future 对象的返回来判断是否发送成功。
  • Asynchronous send
异步发送基于实现了send() 方法的回调函数
Send Meaaeg with Fire-and-forget
ProducerRecord<String, String> record = new ProducerRecord<String, String>(TOPIC, "Msg-Fire-Forget",
				"Welcome to my home!!! ");
		try {
			producer.send(record);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			producer.close();
			
		}
Send Meaaeg with Synchronous

ProducerRecord<String, String> record = new ProducerRecord<String, String>(TOPIC, "Msg-Sync",
				"Sync Message");
		try {
			RecordMetadata rec = producer.send(record).get();
			System.out.println(rec.topic());
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			producer.close();
			
		}
返回topic 主题内容:
DEBUG Metrics - Added sensor with name topic.TestMsg.records-per-batch
DEBUG Metrics - Added sensor with name topic.TestMsg.bytes
DEBUG Metrics - Added sensor with name topic.TestMsg.compression-rate
DEBUG Metrics - Added sensor with name topic.TestMsg.record-retries
DEBUG Metrics - Added sensor with name topic.TestMsg.record-errors
TestMsg
INFO  KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 9223372036854775807 ms.
DEBUG Sender - [Producer clientId=producer-1] Beginning shutdown of Kafka producer I/O thread, sending remaining records.
DEBUG Metrics - Removed sensor with name connections-closed:
DEBUG Metrics - Removed sensor with name connections-created:
DEBUG Metrics - Removed sensor with name successful-authentication:
DEBUG Metrics - Removed sensor with name failed-authentication:
DEBUG Metrics - Removed sensor with name bytes-sent-received:
Send Meaaeg with Asynchronous
回调函数需要实现Kafka 的接口 org.apache.kafka.clients.producer.Callback
ProducerRecord<String, String> record = new ProducerRecord<String, String>(TOPIC, "Msg-Async",
				"Sync Message");
		try {
			System.out.println("Staring Sending....");
			producer.send(record,new Callback() {
				@Override
				public void onCompletion(RecordMetadata metadata, Exception exception) {
					System.out.println("Got FeedBack....");
				}});
			System.out.println("Stop Sending....");
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			producer.close();
			
		} 
观察日志输出顺序
Staring Sending....
DEBUG NetworkClient - [Producer clientId=producer-1] Initialize connection to node tjtestrac1:9092 (id: -1 rack: null) for sending metadata request
DEBUG NetworkClient - [Producer clientId=producer-1] Initiating connection to node tjtestrac1:9092 (id: -1 rack: null) using address tjtestrac1/10.26.14.43
DEBUG Metrics - Added sensor with name node--1.bytes-sent
DEBUG Metrics - Added sensor with name node--1.bytes-received
DEBUG Metrics - Added sensor with name node--1.latency
Stop Sending....
INFO  KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 9223372036854775807 ms.
DEBUG NetworkClient - [Producer clientId=producer-1] Initiating connection to node tjtestrac1:9092 (id: 0 rack: null) using address tjtestrac1/10.26.14.43
DEBUG Sender - [Producer clientId=producer-1] Beginning shutdown of Kafka producer I/O thread, sending remaining records.
DEBUG Metrics - Added sensor with name node-0.bytes-sent
Got FeedBack....
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值