问题标签 [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.
java - 使用 Vert.x WebClient 支持内容编码和内容解码
当我向请求添加接受编码标头时。
Vert.x-WebClient/3.9.5 忽略此标头,并且我从服务器收到的响应没有“内容编码”标头选项。
相反,它的标题为“Transfer-Encoding”:“chunked”。
我如何通过accept-encoding = gzip并解压缩我从服务器获得的响应与Vert.x-WebClient/3.9.5
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-reactive
quarkus-resteasy-reactive-jackson
String
有没有一种安全的方法来做到这一点?或者只是将其转换Multi
为 aList
以便杰克逊可以正确序列化它的想法?
我会注意到https://quarkus.io/guides/getting-started-reactive(官方文档)中给出的示例显示了引用的响应:
更新
尽管我想确认它没有阻塞 i/o 线程,但这有效地完成了我想要的:
更新
如评论中所述,这是一个开放的错误:https ://github.com/quarkusio/quarkus/issues/18043 关闭。
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 绑定工作池分开配置,并明确地将它们作为executor
s 提供给我需要的任何发射器。所以......我想我现在已经准备好了。
redhat - 如何将 Mutiny String 变量数据设置为类变量?
附图显示了我尝试过的代码我有一个返回字符串数量的方法,并且我将该数量存储在var1
Mutiny String 的变量中。我打印var1
变量,现在我想var1
在 Pojo 中设置变量,DataMODEL
比如 DTO 类,这个类有数量变量。我不知道我该怎么做?
quarkus - 如何对返回 Smallrye 叛变反应库的 Uni/Multi 的方法进行单元测试?
我在我的Quarks 应用程序中使用 Smallrye Mutiniy 反应库,因为它在 Quarks 应用程序中本机支持。
我正在尝试为服务类编写单元测试。我不确定如何为返回Uni / Multi的方法编写单元测试。
返回的方法Uni<String>
为上述方法实现的单元
控制台日志
quarkus - Quarkus 反应式 PostgreSQL 请求异常不会触发 onFailure
我是 quarkus 和响应式编程的新手。我目前面临 quarkus-reactive-postgresql 扩展的问题。
我有一个包含执行数据库更新的事件的列表。每个事件都必须独立更新(所以我不使用事务)。
这是我的网络服务:
Quarkus 反应式 pg 扩展引发异常:
但是,.onFailure
不会触发并填写我的失败列表。
是错误还是我的代码出了问题?
谢谢你的帮助,
vert.x - 尝试从 Quarkus 中的 consumerEvent 返回 List 时找不到类
当我尝试在开发模式下在 Quarkus 中返回一个键入 java.util.List 的 Uni 时,我得到一个 ClassNotFound 异常。我已经阅读了有关 Quarkus 在不同配置文件中使用不同类加载器的信息,但我没有看到我做任何花哨的事情。
这是发件人
这是消费者
我试图返回的 bean 只是一个 POJO
和错误信息
如果我运行开发配置文件或运行打包的 fast-jar,我会得到相同的结果。
很高兴有任何提示可以为我指明正确的方向
vert.x - 反应式微服务间通信 vert.x(强调反应式)
导航异步、非阻塞和反应性是少数……给定 2 个非阻塞、反应性、基于 vert.x/quarkus 的微服务 A 和 B,其中约束是 A 必须通过 http 与 B 通信。如果我想保持服务 A 反应性(非阻塞):
- 我应该使用 vertx-web-client 吗?文档声明它是一个异步客户端,但我认为 vert.x 也基于它的非阻塞?(我在这里区分异步和非阻塞)
- 在 Quarkus 中,我看到使用了特定于 Mutiny 的 vertx-web-client 的克隆/兄弟。这是为了让我们可以使用 Mutiny 更高级别的 API(如 Uni/Multi)。我还会得到相同的非阻塞“反应性”吗?
- Java 11 有一个新的 Web 客户端,它被声明为异步和反应式(我认为反应式是在支持反应式流的意义上。不确定它的含义是否相同)。如果我尝试在我的服务 A 中使用它与 B 进行通信,我还会获得非阻塞性质吗?还是会因为它不是基于 vert.x 并且不使用 netty 而破坏它?就像我说的那样,我手足无措,头脑爆炸了:)
任何帮助都会很棒。谢谢
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
来管理跨度生命周期。
重现步骤
- 签出代码
should_store_user_profile_picture
在 E2ETest 中运行
SaveUserProfilePictureUseCase
我想在链接 Uni 时上下文应该已经丢失了。
你能告诉我这个实现有什么问题吗?
提前谢谢。
问候,
达米安
java - 使用 Mutiny 运算符的反应式管道
我正在开发一个响应式 quarkus后端服务,它执行以下操作。
- 使用Hibernate Reactive Panache与 postgres 交互从后端获取记录列表
- 使用记录的标识符,从另一个远程服务获取数据。
我正在使用Mutiny来执行反应式流水线。远程服务和数据库集成都以非阻塞方式单独工作。我只需要帮助编写连接这些的管道。例如:如下所示
我被困在处理一个包装列表的 Uni,然后尝试处理该列表中的单个项目。Uni<List> 或 Multi 对我来说都可以。我只是希望它始终保持非阻塞。