我有一系列微服务,可以在主题中相互发送AVRO序列化对象。
我想创建一个监控基础结构,它将记录程序中发送的所有对象。
为了实现这样的基础设施,我需要我的监控过程能够一般地订阅每个主题,并读取所有对象的公共属性(例如,交易ID)。
问题是每个对象都使用不同的模式进行序列化,如果我将使用这个简单的AVRO实现,我的监控过程将不得不为它订阅的每个主题使用不同的模式(因此它不是通用的)。
我考虑过制作一个包含“通用字段”的通用对象,另外还有一个包含所有类型项目的联盟,如下所示:
record Record{
long transactionId;
union { null, ObjectA, ObjectB} nestedObject;
}
\\ ...ObjectA and ObjectB definition
我认为这会有效,但我对此解决方案有3个问题:
是否有更好的方法为所有模式创建“通用部分”,监督过程将能够反序列化(不知道特定模式)?