问题标签 [netflix-dgs]

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 回答
710 浏览

graphql - 如何在 Netflix DGS 解析器中获取标头信息

我们可以编写如下查询解析器层

如何在解析器中获取 HTTP 标头。

0 投票
2 回答
836 浏览

build.gradle - DGS 代码生成插件:generateJava 不工作

我正在尝试使用本指南从架构生成 pojo 文件https://netflix.github.io/dgs/generating-code-from-schema/

构建.gradle.kts

得到错误

我尝试了旧版本的插件,但没有帮助

0 投票
1 回答
218 浏览

spring-boot - 带有 JPA 的 Netflix DGS

我一直在玩 Netflix GraphQL 框架DGS。使用 codegen 插件,我可以直接从模式生成我的模型类。

我的问题是如何为这些生成的类添加持久性。我是否只是将注释添加到生成的类中,在这种情况下,如果重新生成类,它们不会被删除吗?或者我是否为 JPA 创建另一组类并在这两组类之间进行映射?

0 投票
1 回答
775 浏览

graphql-java - Netflix DGS 订阅

我正在关注DGS 订阅的文档,我没有收到任何错误,但也没有取回任何数据。

设置非常简单。在 schema.graphqls 文件中,我定义了订阅:

Java代码如下:

如果我现在将 websocket 连接到我的后端,它连接得很好,但没有按预期取回任何数据(不管我怎么做,也尝试使用 JavaScript,也连接得很好,但没有得到任何数据)。

例如使用 curl 连接(但使用 JavaScript 结果是一样的,连接但没有数据):

我也尝试过通过 Graphiql 界面进行连接,但出现错误:

错误信息:

从链接中的示例中我不清楚的另一件事是如何实际管理订阅。因此,例如,假设我想在发生突变时发布通知。任何使用 Netflix DGS 框架如何完成的指针也将不胜感激。

0 投票
1 回答
297 浏览

java - 如何为 ActiveMQ 主题创建 DGS GraphQL 订阅

我有一些复杂的技术栈。我正在利用 Netflix DGS 提供 GraphQL 服务。在幕后是一堆 JMS 组件从各种服务发送和接收数据。我的一切都在 GraphQL 订阅之外工作。

具体来说,我想要做的是为来自 ActiveMQ 主题的消息创建一个 GraphQL 订阅。

所以我有一个 SubscriptionDataFetcher 如下:

在我的 Spring 配置中,我使用了以下 Spring 集成流程:

我会说几件事:

  1. 我有一个单独@JmsListener的接收这些消息的主题
  2. 即使建立了 Web 套接字连接,我也看不到一个以上的消费者。
  3. 如果我将 Mongo Reactive Spring Data Repository 连接到这个 GraphQL 订阅,客户端会接收到数据。

当我将客户端连接到订阅时,我看到以下日志:

我怀疑在建立 Web 套接字连接时未激活消息侦听器容器。我应该“激活”通道适配器吗?我错过了什么?

技术栈:

更新 1:

对于它的价值,如果我将订阅更新为以下内容,我会在客户端获得结果。

更新 2:

这是最终确定的 bean,以防它根据公认的解决方案帮助某人。我需要一个主题的听众,而不是一个队列。

0 投票
0 回答
537 浏览

java - DGS Netflix Graphql 中的控制器

我们正在使用带有 DGS Netflix graphql 的 Spring Boot 开发一个项目。我们创建了所有模式和数据,它们在默认端点“/graphql”下工作得非常好。我们想用自定义端点公开这个应用程序,所以我们试图添加一个带有自定义端点的控制器,如下所示。但是当我运行应用程序并发送查询时,我的数据获取器被调用了两次。第一次从控制器调用,第二次我相信它来自框架本身。有人对此有任何想法,为什么它被调用两次以及如何避免它?非常感谢您的帮助。请参阅下面的 Datafetcher 和 Controller。

0 投票
1 回答
377 浏览

java - 不在顶层的属性的数据加载器不起作用

我正在使用 Netflix 的 DGS 框架来构建 java graphqQL 服务。我尝试使用数据加载器(https://netflix.github.io/dgs/data-loaders/),只要父类型是顶级属性(即查询的直接子级),它就可以正常工作。

例如,考虑以下架构:

如果我尝试对 1 级类型的孩子使用数据加载器,它工作正常,例如:

但是,如果父类型不是级别 1 ,则永远不会调用数据加载器(不会引发错误)。例子:

想知道其他人是否能够成功地完成这项工作,以及我是否在这里遗漏了什么导致它无法工作?

0 投票
0 回答
113 浏览

graphql - DGS NetFlix 如何从错误响应中删除数据字段

在我的应用程序(spring-boot)中,我正在验证标头之一,如果验证失败,我将返回错误。但是当返回错误时(如果标头验证失败),我不想返回数据字段(为空)。

目前它正在返回:

但我想返回(没有数据字段):

0 投票
0 回答
165 浏览

jpa - Netflix DGS - 连接生成的类外键映射

我正在使用 Netflix DGS 连接我的数据获取器和加载器。到目前为止,我一直在将自己的实体类与加载器一起使用,并且一切正常。

关系

图像

实体类

如上图所示,我的实体关系是一对 N。我的Expense实体看起来像这样。这是我的数据库表的直接映射。

因此,当我尝试在 graphql 模式中获取帐户信息时,我使用加载器并将 acNumber 字段提供给它。And it solved the N+1 gracefully and the nested object is never touched when selection doesn't mention account field.

提取器和加载器

Fetcher 返回费用实体列表。GraphQL 利用 Account Fetcher 中定义的以下关系来使用加载器获取 Account。

架构

代码生成器

后来我决定使用 DGS codegen 为我创建模型。生成的Expense类如下所示。

由于生成的类中没有acNumber字段,因此我在使用 code-gen 时缺乏使用加载器的能力。

我错过了什么吗?

如何使用代码生成和加载器?

0 投票
1 回答
231 浏览

graphql - How to avoid returning null in Apollo Federation GraphQL

I have two services (implemented using DGS Netflix) which I want to federate using apollo federation. First one is the user service which model looks something like this:

and each can have a product that comes from another service:

And I want to get all the users with their products, but it can happen that a user has no product.

Is there a way to avoid returning a user when its product is null?

Currently my response looks like this:

I'd like to have the same list but without the nulls in the list and without the error. Is it possible? I was thinking to add some kind of custom directive that removes the null elements but could not succeed.