您可以将用户定义的 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
等
我的任务是创建一个通用案例 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
等