问题标签 [akka-grpc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
170 浏览

scala - 用于服务器流式传输的 Akka Streams(gRPC、Scala)

我是 Akka Streams 和 gRPC 的新手,我正在尝试构建一个端点,客户端发送一个请求,服务器发送多个响应。

这是我的protobuf

我试图通过发送客户请求来实现这一点,然后服务器将首先检查并响应 No_Customer,然后它会发送 Creating_Customer,最后服务器会说 Customer_Created。

我不知道从哪里开始实施它,找了几个小时但仍然一无所知,如果有人能指出我正确的方向,我将非常感激。

0 投票
1 回答
89 浏览

scala - Akka gRPC 绑定错误的端口号

我正在尝试运行 2 个不同的 akka grpc 服务器,但是它们不能同时运行。我尝试在 localhost 端口 8080 上绑定一台服务器,在 localhost 端口 8090 上绑定另一台服务器。分开它们运行良好,但是当我尝试将它们一起运行时,出现以下错误:

这是我尝试创建它们的代码:

注意:打印语句返回正确的端口,所以我不明白为什么它们不能一起运行/为什么它们都尝试使用端口 2552。

0 投票
0 回答
43 浏览

scala - 为 Akka GRPC 身份验证编辑 HttpRequest 的元数据

Akka-grpc 文档提供了一个通过 Akka-http 添加身份验证的基本示例

最后,它建议可以将身份验证结果嵌入metadataHttpRequestgrpc 服务方法中作为元数据参数访问,并powerAPIconf文件中启用适当的配置。

此外,在详细信息页面上,它表示元数据用于提供对 grpc 服务接口中的请求标头的访问;这是有道理的。它还提供了如何Metadata使用 构建实例的示例MetadataBuilder

现在,问题是这样的:

如何将构造的元数据对象与经过身份验证的用户的信息一起传递给 HttpRequest?我应该使用该addHeader方法还是其他方法?

0 投票
1 回答
48 浏览

scala - 如何仅使用 grpc 服务实现创建 lagom 服务器?

我正在尝试按照本文档使用 Lagom 框架创建 grpc 服务。这里的hello服务除了 grpc 服务外,还公开了 rest API。

现在,在 ApplicationLoader 中创建 lagom 服务器时,我们分配 grpc 服务 impl,additionalRouter如下所示:

出于演示的目的,一切都很好,但我们可能不需要总是创建除 gRPC 端点之外的 REST 端点。在那种情况下,我将不需要HelloServiceHelloServiceImpl。问题是你将如何创建 lagom 服务器HelloGrpcServiceImpl?我无法找到任何文档或 API 本身能够实现这一目标的方法!

请建议。

0 投票
0 回答
65 浏览

scala - 从 Akka Source Stream 获取元素的正确方法是什么?

概述 我有两个微服务,分别称为仓库微服务(服务器)和杂货微服务(客户端)。我正在尝试使用 akka-grpc 库在它们之间实现流请求和流响应。但是在我的杂货微服务(客户端)中获取流响应时遇到了问题。下面是客户端代码说明。

问题描述: 我有一个名为responseStreamSource 类型的变量,我在其上累积了一些元素。然后我想返回这个 Source 中存在的元素的未来。

以下是我的功能片段:

然后我有另一个方法被调用getQuote,我调用的streamingBroadcast方法看起来像这样 -

问题 我面临的问题是代码执行没有从该getQuote方法返回任何值。它可能只是挂在里面getQuote,另一个等待的演员正在超时。也许是因为该方法内部的模式匹配?我还尝试调试代码以确保列表中至少存在一些元素。

responseStream在创建或访问其中的元素时我做错了什么吗?如果您需要更多信息或仓库微服务(服务器)的代码片段,请告诉我。

0 投票
1 回答
72 浏览

scala - 如何将 JVM 生态系统中的 protobuf 文件外部化?

我偶然发现了这个Akka grpc 教程,它建议我们可以从具有.proto文件的项目创建一个 jar src/main/proto,并将其作为依赖项添加到客户端和服务器项目中以构建它们各自的存根。

但这似乎不起作用!是否有任何示例项目可以证明这将如何发挥作用?我们如何将 protobuf 源外部化并在基于 jvm 的项目中使用它?

0 投票
1 回答
91 浏览

scala - Akka gRPC/HTTP Interop 给出 404

我有一个运行 gRPC 服务的应用程序以及一个简单的 Akka HTTP 端点。我正在关注本指南:https ://doc.akka.io/docs/akka-grpc/current/server/akka-http.html 。问题:当卷曲 HTTP 端点时,我得到 404 未找到。我知道它找到了服务器,因为 Akka-HTTP/10.2.5 是响应标头的服务器。

一些代码:

当我取出 gRPC 路由时,greeter 端点按预期工作。否则,当我curl http://localhost:8080,我得到

我正在使用 akka-gRPC 2.0.0

我应该怎么做才能确保两条路由之间的互操作?

0 投票
0 回答
28 浏览

scala - Scala Akka gPRC:服务器不回答

我有 2 个具有通用原型文件的微服务:

1 微服务:运行在8081端口。在Akka.grpc上实现gRPC-client。我不会覆盖自动生成的 GeoService 方法,因为它们的唯一目的是将请求(GeoRequest 或 GeoPoint)传递给另一个微服务。

与服务器的连接通过以下方式进行:

和方法调用:

2 微服务:运行在8080端口。在scalapb-runtime-grpc(不是Akka grpc)上实现gRPC-client。重写的服务器方法用于在存储中保存一些数据并从存储中检索保存的数据:

事实上,1 mictoservice 中的客户端成功调用了服务器(2 微服务)中的 createGeoPoint 方法。传入数据保存到存储。但结果不返回给客户端。客户端微服务中的方法“val savedGeoPoint = client.createGeoPoint(geoPoint)”不返回任何结果。

我错过了一些有用的东西吗?

0 投票
0 回答
19 浏览

akka - Akka-grpc 实现同一个微服务的多个实例

我是 Akka 的新手,我正在关注本教程:https ://developer.lightbend.com/docs/akka-platform-guide/microservices-tutorial/template.html#intellij

我看到我们用不同的端口和文件部署了每个微服务 3 次local1.conf local2.conf local3.conf

我不明白节点如何相互交互。如果节点 1 宕机,grpc 协议如何调用节点 2?

0 投票
0 回答
27 浏览

grpc - 大小为 N 的传入帧超过本地窗口大小 0

我有一个具有双向流方法的 gRPC 服务。

  • 客户端:python grpcio 1.41.1。
  • 服务器:akka-grpc 2.1.0。

客户端是一个缓慢的消费者(服务器可能以更高的速率执行)。

有时(在方法调用后会有一些随机延迟),客户端会记录如下消息:

有时在此消息之后整体调用成功,但有时此消息后跟异常(客户端):

对应的服务器端日志条目:

一些研究:

  • 通过设置禁用 BDPgrpc.http2.bdp_probe = 0似乎可以解决问题,但我认为这只是整体吞吐量下降的副作用。
  • GitHub 上有类似的问题,但它看起来像是关于一调用。在这种情况下,服务器在接收到客户端的 SETTINGS 帧后和发送 SETTINGS ack 之前立即开始使用增加的初始窗口大小(如果我理解正确的话)。
    我在我的案例中看到了类似的情况:有时客户端在调用过程中发送新的 SETTINGS 而服务器没有确认它们(实际上,Wireshark 无法解析一些 HTTP/2 数据包并将它们显示为 TCP,因此这些确认可能只是被过滤掉了由 Wireshark 出):捕获的网络数据包(设置)这种情况并不总是导致错误,有时这样的调用会成功。
  • 探索客户端 gRPC 跟踪日志 ( GRPC_VERBOSITY=DEBUG, GRPC_TRACE=flowctl) 并没有给我任何见解。

我将非常感谢有关如何解决或诊断问题的任何想法。