2017-01-05 2 views
0

사용자 잔액이 변경된 유스 케이스가 있습니다. 모든 사용자 균형 이벤트를 1 개의 주제에 넣고 싶습니다. 그러나 추천 보너스, 승리 보너스, 인출, 예금과 같은 여러 이벤트로 인해 사용자 잔액이 변경됩니다. 이것은 다음과 같이 중첩 된 기록을 통해 구현 될 수있다Confluent Platform Schema Registry에서 "oneOf"를 사용할 수 있습니까?

{ 
"name": "userBalance", 
"type": "record", 
"fields": [ 
     { 
      "name": "cashDeposit", 
      "type": 
        { 
         "type" : "record", 
         "name" : "userCashDeposit", 
         "fields" : [ 
          {"name": "id", "type": "long"}, 
          {"name": "amount", "type": "float"} 
         ] 
        } 
     }, 
     { 
      "name": "cashWithdraw", 
      "type": { 
         "type" : "record", 
         "name" : "userCashWithdraw", 
         "fields" : [ 
          {"name": "id", "type": "long"}, 
          {"name": "amount", "type": "float"} 
         ] 
        } 
     } 
    ] 
} 

하지만 엄격하게 중 하나 이러한 이벤트에 대한 엄격한 준수와 이벤트에 존재하는 것이 구현하려는 동안이 필요에 따라 모든 중첩 기록한다 그 사건 기록. Avro 스키마는 "oneOf"를 지원하지만 어디에서나 Confluent Schema Registry 용도로 사용되는 oneOf를 찾을 수 없습니다. 그것을 사용할 방법이 있습니까?

답변

0

이 작동 할 수 있습니다

{ 
"name": "userBalance", 
"type": "record", 
"fields": [ 
     { 
      "name": "userBalance", 
      "type": [ 
        { 
         "type" : "record", 
         "name" : "userCashDeposit", 
         "fields" : [ 
          {"name": "id", "type": "long"}, 
          {"name": "amount", "type": "float"} 
         ] 
        }, 
        { 
         "type" : "record", 
         "name" : "userCashWithdraw", 
         "fields" : [ 
          {"name": "id", "type": "long"}, 
          {"name": "amount", "type": "float"} 
         ] 
        } 
      ] 
     } 
    ] 
} 
관련 문제