问题标签 [mutiny]

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

java - 使用 Vert.x WebClient 支持内容编码和内容解码

当我向请求添加接受编码标头时。

Vert.x-WebClient/3.9.5 忽略此标头,并且我从服务器收到的响应没有“内容编码”标头选项。

相反,它的标题为“Transfer-Encoding”:“chunked”。

我如何通过accept-encoding = gzip并解压缩我从服务器获得的响应与Vert.x-WebClient/3.9.5

0 投票
1 回答
67 浏览

java - 夸库斯多不引用字符串

背景:我刚刚开始使用 Quarkus,正在浏览https://quarkus.io/guides/resteasy-reactive

我定义了以下端点:

我认为底层证券的细节service并不是特别相关;它产生一个"hello {name} - {idx}".

我在返回的 http 响应中看到的是未加引号的字符串(无效的 json):

我尝试替换 to 的依赖pom.xml,但效果相同(我相信因为已经在这里注册:https ://quarkus.io/guides/resteasy-reactive#resource-types )。quarkus-resteasy-reactivequarkus-resteasy-reactive-jacksonString

有没有一种安全的方法来做到这一点?或者只是将其转换Multi为 aList以便杰克逊可以正确序列化它的想法?

我会注意到https://quarkus.io/guides/getting-started-reactive(官方文档)中给出的示例显示了引用的响应:


更新

尽管我想确认它没有阻塞 i/o 线程,但这有效地完成了我想要的:


更新

如评论中所述,这是一个开放的错误:https ://github.com/quarkusio/quarkus/issues/18043 关闭。

0 投票
1 回答
482 浏览

java - quarkus 反应式兵变线程池管理

背景:我这周才刚刚开始使用 Quarkus,尽管我之前使用过一些流媒体平台(尤其是 scala 中的 http4s/fs2)。

使用 quarkus reactive(与 mutiny)和任何响应式数据库客户端(mutiny reactive postgres、reactive elasticsearch 等)我有点困惑如何正确管理阻塞调用和线程池。

quarkus 文档建议使用命令式代码或 cpu 密集型代码进行注释,@Blocking以确保将其转移到工作池而不阻塞 IO 池。这是有道理的。

考虑以下:

我不清楚在上述每种情况下会发生什么,以及如果没有注释的 resteasy-reactive 休息端点调用它们,它们会在哪里执行@Blocking


据推测,在没有@Blocking. 但是,Uni对于“不安全”的代码来说,包装一个阻塞调用是否同样有效?也就是说,任何返回Multi/的东西都会在池中Uni有效运行吗?worker

(我将打开有关更好地控制线程池的后续帖子,因为我看不到任何方法可以将反应性 IO 调用“转移”到一个单独的池而不是 CPU 密集型工作,这将是最佳的。)

编辑

这个问题可能暗示我在询问返回类型(Uni/Multi与直接对象),但它实际上是关于在任何给定时间选择正在使用的线程池的能力。这个关于命令式到反应式的叛变页面实际上在 某种程度上回答了我的问题,以及叛变基础设施文档,其中指出“默认执行程序已配置为使用 Quarkus 工作线程池。”,叛变线程控制文档处理其余部分我认为。

所以我的理解是这样的:

如果我有一个端点可以有条件地返回非阻塞的东西(例如本地非阻塞缓存命中),那么我可以有效地在 IO 线程上返回任何我想要的方式。但是,如果所述缓存未命中,我可以直接调用响应式客户端或使用 mutiny 对 quarkus 工作池运行阻塞操作。同样,mutiny 提供了在特定线程池(执行程序)上执行任何给定流的控制。

响应式客户端(或在非 IO 池上有效运行的任何东西)可以安全调用,因为 IO 循环只是订阅工作池发出的数据。

最后,似乎我可以将一个 CPU 绑定池与一个 IO 绑定工作池分开配置,并明确地将它们作为executors 提供给我需要的任何发射器。所以......我想我现在已经准备好了。

0 投票
1 回答
46 浏览

redhat - 如何将 Mutiny String 变量数据设置为类变量?

附图显示了我尝试过的代码我有一个返回字符串数量的方法,并且我将该数量存储在var1Mutiny String 的变量中。我打印var1变量,现在我想var1在 Pojo 中设置变量,DataMODEL比如 DTO 类,这个类有数量变量。我不知道我该怎么做?

0 投票
2 回答
515 浏览

quarkus - 如何对返回 Smallrye 叛变反应库的 Uni/Multi 的方法进行单元测试?

我在我的Quarks 应用程序中使用 Smallrye Mutiniy 反应库,因为它在 Quarks 应用程序中本机支持。

我正在尝试为服务类编写单元测试。我不确定如何为返回Uni / Multi的方法编写单元测试。

返回的方法Uni<String>

为上述方法实现的单元

控制台日志

0 投票
0 回答
63 浏览

quarkus - Quarkus 反应式 PostgreSQL 请求异常不会触发 onFailure

我是 quarkus 和响应式编程的新手。我目前面临 quarkus-reactive-postgresql 扩展的问题。

我有一个包含执行数据库更新的事件的列表。每个事件都必须独立更新(所以我不使用事务)。

这是我的网络服务:

Quarkus 反应式 pg 扩展引发异常:

但是,.onFailure不会触发并填写我的失败列表。

是错误还是我的代码出了问题?

谢谢你的帮助,

0 投票
1 回答
267 浏览

vert.x - 尝试从 Quarkus 中的 consumerEvent 返回 List 时找不到类

当我尝试在开发模式下在 Quarkus 中返回一个键入 java.util.List 的 Uni 时,我得到一个 ClassNotFound 异常。我已经阅读了有关 Quarkus 在不同配置文件中使用不同类加载器的信息,但我没有看到我做任何花哨的事情。

这是发件人

这是消费者

我试图返回的 bean 只是一个 POJO

和错误信息

如果我运行开发配置文件或运行打包的 fast-jar,我会得到相同的结果。

很高兴有任何提示可以为我指明正确的方向

0 投票
1 回答
45 浏览

vert.x - 反应式微服务间通信 vert.x(强调反应式)

导航异步、非阻塞和反应性是少数……给定 2 个非阻塞、反应性、基于 vert.x/quarkus 的微服务 A 和 B,其中约束是 A 必须通过 http 与 B 通信。如果我想保持服务 A 反应性(非阻塞):

  1. 我应该使用 vertx-web-client 吗?文档声明它是一个异步客户端,但我认为 vert.x 也基于它的非阻塞?(我在这里区分异步和非阻塞)
  2. 在 Quarkus 中,我看到使用了特定于 Mutiny 的 vertx-web-client 的克隆/兄弟。这是为了让我们可以使用 Mutiny 更高级别的 API(如 Uni/Multi)。我还会得到相同的非阻塞“反应性”吗?
  3. Java 11 有一个新的 Web 客户端,它被声明为异步和反应式(我认为反应式是在支持反应式流的意义上。不确定它的含义是否相同)。如果我尝试在我的服务 A 中使用它与 B 进行通信,我还会获得非阻塞性质吗?还是会因为它不是基于 vert.x 并且不使用 netty 而破坏它?就像我说的那样,我手足无措,头脑爆炸了:)

任何帮助都会很棒。谢谢

0 投票
0 回答
130 浏览

java - 跨度未附加到他的父上下文

在这个微服务https://github.com/dcdh/inner-friends-user-profile-picture我正在尝试实现 opentelemetry。

但是我的 E2ETest 失败了,因为我的跨度之一丢失了。挖掘后我找到了他,但他并不依附于他的父母。

在此处输入图像描述

孤立跨度“HazelcastUserProfilePictureCacheRepository.store”应该在具有两个跨度的第二个跟踪中。

示例失败代码

我使用六边形架构设计了这个微服务。该域使用 Mutiny 以异步方式设计它。关于我quarkus-smallrye-context-propagation用来传播上下文的基础设施。关于开放遥测,我以编程方式创建了新的跨度,OpenTelemetryTracingService所以也许我应该在这里注入一个父上下文。但是我不知道如何去做(他有什么正确的方法来检索它以将它与 span builder 连接)。

关于入口点所在的保存功能SaveUserProfilePictureUseCase

它将调用基础设施中的 s3 存储

它正在调用 hazelcast 缓存存储库

他们都调用openTelemtryTracingService来管理跨度生命周期。

重现步骤

  1. 签出代码
  2. should_store_user_profile_picture在 E2ETest 中运行

SaveUserProfilePictureUseCase我想在链接 Uni 时上下文应该已经丢失了。

你能告诉我这个实现有什么问题吗?

提前谢谢。

问候,

达米安

0 投票
1 回答
152 浏览

java - 使用 Mutiny 运算符的反应式管道

我正在开发一个响应式 quarkus后端服务,它执行以下操作。

  1. 使用Hibernate Reactive Panache与 postgres 交互从后端获取记录列表
  2. 使用记录的标识符,从另一个远程服务获取数据。

我正在使用Mutiny来执行反应式流水线。远程服务和数据库集成都以非阻塞方式单独工作。我只需要帮助编写连接这些的管道。例如:如下所示

我被困在处理一个包装列表的 Uni,然后尝试处理该列表中的单个项目。Uni<List> 或 Multi 对我​​来说都可以。我只是希望它始终保持非阻塞。