跳到主要内容
版本:latest

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