1

ユーザーの残高変更のユースケースがあります。すべてのユーザー バランス イベントを 1 つのトピックにまとめたい。しかし、紹介ボーナス、勝利ボーナス、出金、入金などの複数のイベントにより、ユーザーの残高の変化が発生しています。これは、次のようにネストされたレコードを介して実装できます。

{
"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 スキーマ レジストリのユースケースで oneOf が使用されている場所は見つかりませんでした。それを使用する方法はありますか?

4

1 に答える 1