• Kafka中Producer端封装自定义消息


    我们知道KeywordMessage就是被kafka发送和存储的对象。所以只需要模拟出这个就可以发送自定义消息了。

    比如我需要将用户的id,user,age,address和访问ip和访问date记录为一个消息。我就自定义一个消息格式(id-user-age-address-ip-date)。

    我立马想到自己定义个javaBean.写一个UserInfo类伪代码。

    class UserInfo(){

        id;

       user;

       age;

       address;

       ip;

       date;

       toString(){

        return this.getId()+"-"+this.getUser()+"-"+"..."+this.getDate(); 

    }

    }

    你以为这样就可以了吗?当然不行啊!

    还要按照kafka的消息类型进行封装,在这里我们只需要实现Encoder类即可:继续看看代码就好;

    public class KeywordMessage implements kafka.serializer.Encoder<UserInfo>{
         
        public static final Logger LOG=LoggerFactory.getLogger(UserInfo.class);
         
        @Override
        public Message toMessage(Keyword words) {
            LOG.info("start in encoding...");
            return new Message(words.toString().getBytes());
        }
    }
    这样KeywordMessage就是一个可以被kafka发送和存储的对象了。
     
    我们再看看producer,producer数据的推送到broker的,所以发起者还是业务系统,下面的代码就能直接发送一次数据。
    /**配置producer必要的参数*/
    Properties props = new Properties();
    必要的一些配置省略。。。
    /**选择用哪个类来进行序列化,就是我们自定义的消息类*/
    props.put("serializer.class", "org.kafka.message.UserInfo");
    ProducerConfig config=new ProducerConfig(props);
    /**构造测试数据*/
    UserInfo userInfo = new UserInfo();
    userInfo.setId(1);
    userInfo.setUser("xiaoming");
     ...
    List<UserInfo> msg=new ArrayList<UserInfo>();
    msg.add(userInfo);
    /**构造数据发送对象*/
    Producer<String, UserInfo> producer=new Producer<String, UserInfo>(config);      
    ProducerData<String,UserInfo> data=new ProducerData<String, UserInfo>("test", msg);
    producer.send(data);
     
    以上就是自定义封装消息内容。
  • 相关阅读:
    restframework 使用OrderingFilter实现排序
    restframework 使用django_filters 实现过滤
    Serializer 嵌套使用
    docker 运行scrpyd
    flutter-lol云顶之弈助手app
    微信小程序上传多张图片,后端只保存了最后一张的Bug
    ettercap局域网arp欺骗,轻松窃密
    GoLang邮件发送Demo(继上篇msmtp)
    Mac下命令行发邮件【搭配php(shell_exec...)等脚本语言,轻松发邮件,告别各种依赖库】
    我的第一个RN应用(漂亮的首页和笑话列表)
  • 原文地址:https://www.cnblogs.com/xubiao/p/5361710.html
Copyright © 2020-2023  润新知