kafka自定定义对象实现
来源:互联网 发布:现在淘宝卖什么赚钱 编辑:程序博客网 时间:2024/06/06 10:48
1.异常
16:54:52.512 [main] INFO kafka.utils.VerifiableProperties - Property serializer.class is overridden to com.bpbp.kafka.encoder.OrderEncoderjava.lang.ExceptionInInitializerErrorat com.bpbp.kafka.entity.OrderDataTest.test(OrderDataTest.java:32)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)Caused by: java.lang.NoSuchMethodException: com.bpbp.kafka.encoder.OrderEncoder.<init>(kafka.utils.VerifiableProperties)at java.lang.Class.getConstructor0(Class.java:2892)at java.lang.Class.getConstructor(Class.java:1723)at kafka.utils.Utils$.createObject(Utils.scala:436)at kafka.producer.Producer.<init>(Producer.scala:62)at kafka.javaapi.producer.Producer.<init>(Producer.scala:26)at com.bpbp.kafka.Producer.init(Producer.java:44)at com.bpbp.kafka.Producer.<clinit>(Producer.java:30)... 28 more原因是缺少构造方法
com.bpbp.kafka.encoder.OrderEncoder
public class OrderEncoder implements kafka.serializer.Encoder<OrderData> { /** * 增加构造方法 * @param verifiableProperties */ public OrderEncoder(VerifiableProperties verifiableProperties){ } /** * 对象转字节 * @param orderData * @return */ public byte[] toBytes(OrderData orderData) { return BeanUtil.object2Bytes(orderData); }
附上其他源码:
@Slf4jpublic class Producer { //发送订单数据 private static kafka.javaapi.producer.Producer<String, OrderData> orderProducer = null; static { init(); } /** * 初始化Producer配置 */ private static void init() { Properties orderProp = new Properties(); orderProp.put("metadata.broker.list", PropUtil.getKafkaBroker()); orderProp.put("serializer.class", "com.bpbp.kafka.encoder.OrderEncoder"); //key 的序列化类 orderProp.put("key.serializer.class", "kafka.serializer.StringEncoder"); orderProp.put("request.required.acks", "-1"); //实例化订单发送者 orderProducer = new kafka.javaapi.producer.Producer<String, OrderData>(new ProducerConfig( orderProp)); } /** * 发送订单数据 * @param key * @param data */ public static void sendOrderData(String key, OrderData data) { log.info("Send order data, orderid:", data.getBpbpOrderNo()); try { orderProducer.send(new KeyedMessage<String, OrderData>(PropUtil.getOrderTopic(), key, data)); } catch (Exception e) { log.error("Send order data [{}] exception:",data.getBpbpOrderNo(), e.getMessage()); } }数据对象类定义
@Data@ToString //必须public class OrderData implements java.io.Serializable { private String bpbpOrderNo; /** * 渠道号 */ private String channelCode; /** * 时间戳-每次调用生成 */ private long timeStamp;}
消费者
public class Consumer { private static ConsumerConnector orderConsumer; static { init(); } private static void init(){ Properties prop = new Properties(); prop.put("zookeeper.connect", PropUtil.getZkUrl()); prop.put("group.id","order"); prop.put("zookeeper.session.timeout.ms","400"); prop.put("zookeeper.sync.time.ms","200"); prop.put("auto.commit.interval.ms","1000"); orderConsumer = kafka.consumer.Consumer.createJavaConsumerConnector(new ConsumerConfig(prop)); } public static void receive(){ Map<String,Integer> topicCountMap = new HashMap<String, Integer>(); topicCountMap.put(PropUtil.getOrderTopic(),new Integer(1)); Map<String,List<KafkaStream<byte[],byte[]>>> consumerMap = orderConsumer.createMessageStreams(topicCountMap); KafkaStream<byte[],byte[]> stream = consumerMap.get(PropUtil.getOrderTopic()).get(0); ConsumerIterator<byte[],byte[]> it = stream.iterator(); while(it.hasNext()){ byte[] bytes = it.next().message(); OrderData orderData = (OrderData) BeanUtil.bytes2Object(bytes); System.out.println(orderData.getBpbpOrderNo()); } }}
0 0
- kafka自定定义对象实现
- android 圆形imageview实现 带自定定义大小
- Objective-c 自定对象 转 JSON
- ArrayList集合存储自定对象
- Elasticsearch自定排序插件实现
- hive 自定定义函数 从hdfs中加载jar
- UI中系统自定的的宏定义-----数字
- 往hashSet集合中存入自定对象
- 自定函数实现C++读取CSV文件
- 黑马总结 : el自定函数的实现
- Sencha Touch 2.4实现自定图标指南
- Android自定RadioGroup实现点击切换效果
- Sybase15实现 自定义行转列函数
- linux ATM自定取款机简单实现
- android自定VIewGroup实现侧滑菜单
- Android自定ViewGroup实现流式布局
- Java 普通类实现spring bean的自定装载
- 自义定数据类型SearchView+listview搜索实现
- IOS开发之----两种保存用户名和密码实现记住密码库
- [从头学数学] 第15节 认识人民币
- Delphi中调用API函数经验点滴(三)
- nested exception is com.gbase.jdbc.exceptions.jdbc4.GBaseSyntaxErrorException: Mixing of GROUP colum
- C++ XML文件解析操作
- kafka自定定义对象实现
- 数据库
- Apache 虚拟主机的配置
- Python
- iOS怎么防止文件被Icloud或者iTunes备份
- 毫秒值转化为时间
- Mysql 主从
- 山东省第六届蓝桥杯 ///标题:移动距离//c/c++组
- Masonry介绍与使用实践:快速上手Autolayout