PulsarIO中怎么调用Schema

这篇文章给大家介绍Pulsar IO 中怎么调用Schema ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

我们提供的服务有:做网站、网站制作、微信公众号开发、网站优化、网站认证、长阳ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的长阳网站制作公司

Schema 是一种描述数据的数据   。例如,数据库中表的信息和字段类型等都是 Schema。Pulsar 对 Schema 也有比较好的支持。    


>>> Schema 简单应用 <<<  

 
在使用 pub/sub 生产和消费消息时,可以通过以下代码使用 Schema:  
     
   
   
   
public class SensorReading {              public float temperature;          
             public SensorReading(float temperature) {                  this.temperature = temperature;              }          
             // A no-arg constructor is required              public SensorReading() {              }          
             public float getTemperature() {                  return temperature;              }          
             public void setTemperature(float temperature) {                  this.temperature = temperature;              }          }          Producer producer = client.newProducer(JSONSchema.of(SensorReading.class))              .topic("my-topic")              .create();          Consumer consumer = client.newConsumer(JSONSchema.of(SensorReading.class))                  .topic("my-topic")                  .subscriptionName("my-subscription")                  .subscribe();      

通过以上操作,生产者和消费者可以识别出关于 SensorReading 这个类的含义。这是 Schema 在客户端的应用,也是比较普遍的使用方法。  

 
前文已经提到,Source 和 Sink 是对 pub/sub 的封装,因此,Schema 的应用也是基于以上原理。以下为详细说明。  

 
>>> Source 中的 Schema <<<  

 
在内建的 Sink 中,实现了一个 Consumer,用于接收从 Pulsar 发来的数据。  
     
   
   
   if (conf.getSerdeClassName() != null && !conf.getSerdeClassName().isEmpty()) {  
    
        schema = (Schema) topicSchema.getSchema(topic, typeArg, conf.getSerdeClassName(), true);  
    
    } else {  
    
        schema = (Schema) topicSchema.getSchema(topic, typeArg, conf.getSchemaType(), true);  
    
    }

getSerdeClassName    会获取用户指定的用于序列化与反序列化的类,通过指定 --   custom-serde-inputs    参数,从而构建真正的 Schema。  
     
   
   
   
case NONE:            return (Schema) Schema.BYTES;          
         case AUTO_CONSUME:          case AUTO:            return (Schema) Schema.AUTO_CONSUME();          
         case STRING:            return (Schema) Schema.STRING;          
         case AVRO:            return AvroSchema.of(SchemaDefinition.builder().withPojo(clazz).build());          
         case JSON:            return JSONSchema.of(SchemaDefinition.builder().withPojo(clazz).build());          
         case KEY_VALUE:            return (Schema)Schema.KV_BYTES();          
         case PROTOBUF:            return ProtobufSchema.ofGenericClass(clazz, Collections.emptyMap());          }      


关于Pulsar IO 中怎么调用Schema 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


分享标题:PulsarIO中怎么调用Schema
分享地址:http://ybzwz.com/article/pcopde.html