2017-01-05 4 views
0

У меня есть случай изменения баланса пользователя. Я хочу поместить все события баланса пользователя в одну тему. Но изменения баланса пользователя происходят из-за множества событий, таких как реферальный бонус, выигрыш бонуса, снятие средств, депозит. Это может быть реализовано с помощью вложенных записей так:Можем ли мы использовать «oneOf» в Regy Schema Registry Registry?

{ 
"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», но я не мог найти, что он используется в любом месте для использования Конфлюентной системы реестра. Есть ли способ использовать его?

ответ

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"} 
         ] 
        } 
      ] 
     } 
    ] 
}