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";
    }
});