PhoenixClient 元数据
Phoenix Client除了抽象了发布、订阅、消息协议等功能外,还提供了一些元数据的支持,这些元数据可以帮助用户辅助管理事件。
元数据类型
PhoenixClient 提供了以下几种元数据类型:
MetaDataKey.SOURCE_IP(sourceIP)
:事件来源 IP,用于标识事件的来源 IP 地址。MetaDataKey.SDK_VERSION(sdkVersion)
:当前 PhoenixSdk 的版本。MetaDataKey.SOURCE_SERVICE(sourceService)
:生成事件的服务应用程序名称。MetaDataKey.SCHEMA_VERSION(schemaVersion)
:用户自定义的事件协议版本 号。MetaDataKey.PAYLOAD_TYPE(payloadType)
:事件内容的序列化类型。
使用方式
元数据位于事件 ProtoBuffers 中的 metadata
字段,用户按需取用:
Message message = new Message(bytes);
String sourceIP = message.getMetaDataByKeyOrDefault("sourceIP", null);
String schemaVersion = message.getMetaDataByKeyOrDefault(MetaDataKey.SCHEMA_VERSION.getValue(), null);
元数据获取方式
目前的元数据基于可覆盖 Provider
实现,用户也可以注册自己的实现来自定义元数据的获取方式。
- SOURCE_IP:com.iquantex.phoenix.core.node.NodeAddressProviderFactory,默认通过 java.net.InetAddress.getLocalHost() 获取。
- SDK_VERSION:com.iquantex.phoenix.core.node.SdkVersionProviderFactory,默认通过 Maven JAR 包中的 MANIFEST 的版本号获取。
- SOURCE_SERVICE:com.iquantex.phoenix.core.node.ServiceNameProviderFactory,默认通过 Spring Boot 的
spring.application.name
获取。 - SCHEMA_VERSION:com.iquantex.phoenix.core.node.SchemaVersionProviderFactory,默认通过消息中 MetaData 的
schemaVersion
获取,如果没有,则设置为1.0.0
示例如下:
SchemaVersionProviderFactory.registerProvider(new SchemaVersionProvider() {
@Override
public String getSchemaVersion(Phoenix.Message.Builder message) {
return "2.0.0";
}
});