您可以将用户定义的 scala 类 导入到 proto 中吗?

Can you import user-defined scala classes into proto?

我的任务是创建一个通用案例 class,它将涵盖不同类型的配置(系统中已经存在)。
这是配置示例:

package ngage.sdk.configs
...
object Config {

  case class TokenConfig(expiry: FiniteDuration)

  case class SagaConfig(timeOut: FiniteDuration, watcherTimeout: FiniteDuration)

  case class ElasticConfig(connectionString: String, deletePerPage: Int)

  case class S3Config(bucket: String)

  case class RedisConfig(host: String, port: Int)
...

我向 protobuf 寻求解决方案,但我不知道如何导入上述案例 classes。
我是这样开始的:

syntax = "proto3";

package ngage.sdk.distributedmemory.config;

import "scalapb/scalapb.proto";
import "pboptions.proto";
import "google/protobuf/duration.proto";
import "ngage.sdk.configs.Config"; //this became red

option (scalapb.options) = {
  flat_package: true
  single_file: true
};

message ShardMemoryConfig {
    option (ngage.type_id) = 791;

    int32 size = 1;

    oneof config { //everything inside oneof is red
        ngage.sdk.configs.RedisConfig redis = 100002;

        ngage.sdk.configs.ElasticConfig elastic = 100003;

        ngage.sdk.configs.S3Config s3 = 100004;
    }
}

甚至可以将用户定义的 scala classes 导入到 protobuf 中吗?

您需要一个库,它根据案例 class 定义生成 .proto 文件,我不知道是否存在(但我希望不存在)。 PBDirect 让你 write/read case class 直接,但是你的 ShardMemoryConfig 也应该是 case class 使用 RedisConfig