Akka 到 Pekko 迁移和 Grpc

问题描述 投票:0回答:1

嘿嘿,

我正在将一个宠物项目从 Akka 迁移到 Pekko(我正在学习 scala atm)。到目前为止,一切都很顺利,但有一件事我无法修复,那就是 grpc 插件。

在我的 build.sbt 中,我有以下内容:

ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / scalaVersion := "3.3.1"

lazy val root = (project in file("."))
  .settings(
    name := "IracingSetups",
  )

...
val pekkoVersion = "1.0.2"
...
("org.apache.pekko"  %% "pekko-actor" % pekkoVersion),
("org.apache.pekko" %% "pekko-actor-typed" % pekkoVersion),
("org.apache.pekko" %% "pekko-actor-testkit-typed" % pekkoVersion % "test"),
("org.apache.pekko"            %% "pekko-grpc-runtime"           % pekkoVersion),
...
enablePlugins(PekkoGrpcPlugin)

在我的plugins.sbt中我有:

resolvers += "Akka library repository".at("https://repo.akka.io/maven")

addSbtPlugin("io.spray"                % "sbt-revolver"           % "0.9.1")
addSbtPlugin("org.apache.pekko"        % "pekko-grpc-sbt-plugin"  % "1.0.2")

一切似乎都可以下载,但是当我运行时:

compile
我得到:

IJ]compile
[info] Compiling 1 protobuf files to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/pekko-grpc/main
[info] Generating Apache Pekko gRPC service interface for com.weemen.iracingsetups.IracingService
[info] Generating Apache Pekko gRPC client for com.weemen.iracingsetups.IracingService
[info] Generating Apache Pekko gRPC service handler for com.weemen.iracingsetups.IracingService
[info] compiling 13 Scala sources to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/classes ...
[error] -- [E006] Not Found Error: /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/pekko-grpc/main/com/weemen/iracingsetups/DriveMessage.scala:167:28 
[error] 167 |object DriveMessage extends scalapb.GeneratedMessageCompanion[com.weemen.iracingsetups.DriveMessage] {
[error]     |                            ^^^^^^^
[error]     |                            Not found: scalapb
[error]     |
[error]     | longer explanation available when compiling with `-explain`

之后,我按照安装说明进行操作,并将以下内容添加到 build.sbt 中

"com.thesamet.scalapb" %% "compilerplugin" % "0.11.11"

我添加了以下插件:

addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.6")

当然,我确实通过以下方式设置了默认编译器选项:

Compile / PB.targets := Seq(
  scalapb.gen() -> (Compile / sourceManaged).value / "scalapb"
)

这改善了我的情况,但是之前自动生成的一些类仍然不存在:

[IJ]compile
[info] Compiling 1 protobuf files to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/src_managed/main/scalapb
[info] compiling 11 Scala sources to /Users/leon.weemen/Documents/Personal/IracingSetups/target/scala-3.3.1/classes ...
[error] -- [E006] Not Found Error: /Users/leon.weemen/Documents/Personal/IracingSetups/src/main/scala/com/weemen/iracingsetups/IracingSetupsGrpcImpl.scala:11:75 
[error] 11 |class IracingSetupsGrpcImpl(using val typedSystem: ActorSystem[?]) extends IracingService {
[error]    |                                                                           ^^^^^^^^^^^^^^
[error]    |                                          Not found: type IracingService

我是否错过了一些非常明显的东西,或者过去与 Akka 一起使用的 Pekko 中的内容是否发生了变化。

addSbtPlugin("com.lightbend.akka.grpc" % "sbt-akka-grpc"        % "2.1.6")
我总是习惯于开箱即用。

PS:我对 Scala 完全是个菜鸟。我也 100% 确定我是否为您提供了足够的信息供您使用

scala akka grpc pekko
1个回答
0
投票

我完全忘记了这个问题,但我找到了罪魁祸首。我从不同的项目复制了很多东西,其中我错过的事情之一是交叉编译设置。在删除交叉编译设置后,我完全使用了 Scala3,我的问题就像太阳前的雪一样消失了。

© www.soinside.com 2019 - 2024. All rights reserved.