Kafka传递JSONObject 对象

需求:
在通常的微服务体系中,服务之间需要频繁的传递消息。
在基于Kafka的消息中,仅仅支持部分简单的类型如:String,Integer
单通常使用中,需要传递到复杂对象,数组,队列等。
现在需要实现kafka能够传递各种对象。

实现方案:
现在服务之间使用JSONObject传递,因为JSON可以很容易的转换为String,而String的序列化和反序列化已经被支持。

范例:
序列化:

public class JsonSerialize implements Serializer<JSONObject> {

    @Override
    public void configure(Map<String, ?> configs, boolean isKey) {
    }

    @Override
    public byte[] serialize(String topic, JSONObject data) {
        try {
            return data.toString().getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public void close() {
    }
}

反序列化

public class JsonDeserialize implements Deserializer<JSONObject> {

    @Override
    public void configure(Map<String, ?> configs, boolean isKey) {
    }

    @Override
    public JSONObject deserialize(String topic, byte[] data) {
        JSONObject obj = null;
        try {
            obj = new JSONObject(new String(data,"UTF-8"));
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return obj;
    }

    @Override
    public void close() {
    }
}

其他Producer和Consumer的代码略,网上有很多。

下一个:
如何设计微服务的消息框架

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,286评论 19 139
  • Kafka入门经典教程-Kafka-about云开发 http://www.aboutyun.com/threa...
    葡萄喃喃呓语阅读 10,905评论 4 54
  • Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下: 以时间复杂度为O(1)的方...
    Alukar阅读 3,114评论 0 43
  • 本文转载自http://dataunion.org/?p=9307 背景介绍Kafka简介Kafka是一种分布式的...
    Bottle丶Fish阅读 5,522评论 0 34
  • 冉冉 文 岁月静美,感受异国生活。 清晨,明媚的阳光洒进屋来,打开窗子,望着碧蓝的海水,又是新的一天。 沿海的路,...
    冉冉ranran阅读 253评论 3 2