java consumer.poll_Kafka consumer.poll呼叫不返回kafka ConsumerRecords

我正在POC工作,我需要发送 ProducerRecord 到Kafka主题,其中Paymnt是我的POJO ..我能够发布记录,我可以看到消息被传递给Kafka主题..

D:\kafka\kafka_2.11-0.11.0.0\bin\windows>kafka-run-class.bat kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test --time -1

test:2:0

test:1:0

test:0:4

但是在消费者方面,我无法检索相同的记录 . 当我调试消费者代码时,我看到 consumer.poll() 上的线程调用阻塞

消费者阶层

public class Consumer {

public static void main(String args[]) throws IOException {

Properties props = new Properties();

KafkaConsumer consumer = null;

props.put("bootstrap.servers", "localhost:9092");

props.put("batch.size", 16384);

props.put("buffer.memory", 33554432);

props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

props.put("value.deserializer", "com.org.kafkaPro.PaymentDeSerializer");

props.put("enable.auto.commit", "false");

props.put("group.id", "test-consumer-group");

try {

consumer =new KafkaConsumer(props);

consumer.subscribe(Arrays.asList("test"));

while(true){

ConsumerRecords records = consumer.poll(200);

for (ConsumerRecord record : records)

{

System.out.println(record.value().toString());

}

consumer.commitAsync();

}

}

catch(Exception ex){

ex.printStackTrace();

}finally{

consumer.commitSync();

consumer.close();

}

}

}

PaymentDeserliazer类

package com.org.kafkaPro;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.ObjectInput;

import java.io.ObjectInputStream;

import java.util.Map;

import org.apache.kafka.common.serialization.Deserializer;

public class PaymentDeSerializer implements Deserializer {

public PaymentDeSerializer(){

}

public void close() {

// TODO Auto-generated method stub

}

public void configure(Map arg0, boolean arg1) {

// TODO Auto-generated method stub

}

public Paymnt deserialize(String arg0, byte[] arg1) {

// TODO Auto-generated method stub

ByteArrayInputStream bis = new ByteArrayInputStream(arg1);

ObjectInputStream in = null;

Paymnt h2 = null;

try {

in = new ObjectInputStream(bis);

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

try {

h2 = (Paymnt) in.readObject();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return h2;

}

}

Paymnt课程

public class Paymnt {

//fields,getters & setters

}

串行

public class PaymentSerializer implements Serializer {

public PaymentSerializer(){

}

public void close() {

// TODO Auto-generated method stub

}

public void configure(Map arg0, boolean arg1) {

// TODO Auto-generated method stub

}

public byte[] serialize(String arg0, Paymnt payment) {

// TODO Auto-generated method stub

try {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(baos);

oos.writeObject(payment);

oos.close();

byte[] b= baos.toByteArray();

return b;

} catch (IOException e) {

return new byte[0];

}

}

}

感谢你的帮助 . 谢谢

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值