问题标签 [vertx-eventbus]

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 投票
0 回答
638 浏览

reactive-programming - 运行多个实例时的 VertX eventbus.publish

我开始意识到 VertX 会将其事件总线发布 (eventbus.publish) 扇出到所有订阅的所有 verticle 实例。但是,如果我将 eventbus.send 用于特定地址,则该消息将被传递到目标 Verticle 的单个实例。我的要求是能够发布消息并将其传递到所有订阅者 Verticle 的单个实例

简单地说,发布一条消息并确保它被所有订阅者接收,但只有一个给定订阅者的实例。

我可以构建中间组件来处理这个问题,但我正在寻找更多开箱即用的选项来解决这个问题。

PS我在集群模式下也试过这个,每个verticle有一个docker,结果是一样的。

0 投票
1 回答
824 浏览

java - vert.x eventloop 从 eventbus 消耗很慢

我们正在轮询来自 kafka 的消息(使用 Executor Thread)并将其放在 vert.x 事件总线上。最终,verticles(non-workers) 使用来自 eventbus 的这些消息。

我们测量了每条消息从 vertx eventbus 发送到它之后所花费的时间在峰值时可以达到 4 秒。

由于某种原因,有时事件总线需要很长时间才能使用消息但没有显示线程块错误,因此我们无法判断是什么延迟了它

奇怪的是我们没有看到任何事件循环块警告。我们还能做什么?cpu/ram 都很好。唯一可以实际显示的指标是:

在此处输入图像描述

但它没有告诉我们任何事情(不知道事件总线处理程序如何与事件循环延迟相关联)

我们应该检查什么来了解是什么让我们从 vert.x 事件总线的事件循环消耗变慢?

0 投票
1 回答
229 浏览

java - 如何在 vert.x 中为集合定义默认编解码器?

假设我有一个名为 的类,我可以为sUser的集合注册一个编解码器吗?User

我尝试使用这个:

但它会产生这个错误:类文字的左侧只允许类。

0 投票
0 回答
434 浏览

vert.x - Vertx 3.6.3:带有 DeliveryOptions 的 eventBus.send() 失败

我的 Groovy 代码:

失败了

java.lang.IllegalArgumentException:没有消息编解码器类型:io.vertx.core.eventbus.impl.CodecManager.lookupCodec(CodecManager.java:101) 的 io.vertx.core.eventbus.impl 的类 java.util.LinkedHashMap。 clustered.ClusteredEventBus.createMessage(ClusteredEventBus.java:180) 在 io.vertx.core.eventbus.impl.EventBusImpl.send(EventBusImpl.java:111)

如果我省略设置sendTimeout,它会失败并出现同样的异常。

以下行工作得很好:

我错过了什么?

TIA

0 投票
0 回答
490 浏览

vert.x - 基于事件总线的 Opentracing 传播

尝试为 opentracing Tracer 设置 java-vertx-web,按照自述文件在https://github.com/opentracing-contrib/java-vertx-web完成配置

TracingHandler从使用instart()方法 设置的 routingContext 重新激活 spantracer.activateSpan(CustomTracingHandler.serverSpan(routingContext));

此时,路由处理程序中的所有日志和跟踪都可以正常工作。

当在事件总线上发送消息时,跨度不活动的问题会重新出现。

尝试添加拦截器以注入标头,但跨度仍然不再处于活动状态。

有没有办法重新激活消息接收器上的跨度?

0 投票
0 回答
225 浏览

vert.x - Openapi 路由器工厂和事件总线

我们最近改变了我们的 api 以利用 openapi web 合约和 eventbus 的组合来为我们的客户发送和接收 api 响应。

它工作正常,直到今天我们注意到我们的大多数 api 都超时了,抛出了以下错误。

作为我们的消费者,我们无法调试甚至没有收到要回复的消息。我们的日志只有这些错误消息。

例如openapi web contract和eventbus setup,我们所有的api都是这样配置的

我们现在使用共享事件总线,而不是集群事件总线。事件总线可以处理的消息数量是否有任何限制?

0 投票
0 回答
103 浏览

rx-java2 - vert.x 的性能问题

当使用 apache bench 为 vert.x 应用程序运行测试时,我们看到响应时间随着并发用户数量的增加而增加。

此外,当测试运行时,如果我们从另一个控制台访问 API,我们会看到响应时间也会增加。

我们使用了以下代码:

路由器代码:

服务器创建:

处理方法:

工人垂直:

0 投票
1 回答
2583 浏览

vert.x - 使用 Vert.x 事件总线时没有地址“演示”的处理程序

我正在做一个关于如何使用 Vert.x 事件总线的演示。但是,消息不会发送给消费者。我得到的只是

没有地址 hello 的处理程序

当我调用服务时,这是消费者,这是我正在遵循的确切示例,以及我是如何运行它的。

我运行带有集群标志的verticle,如示例中所述,

mvn compile vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true

下面是第一个verticle的日志

这是向消费者发送一些消息的第二个 Verticle,它是一个在本地单独运行的不同项目。

我正在使用以下命令运行。

mvn compile vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true"

尝试在http://localhost:8082/上调用应用程序,我仍然得到 No handlers for address hello

我已经尝试过了,但是我已经添加了集群标志并且它不起作用。谢谢。

下面是我在两种服务中使用的 jgroups.xml 作为评论的回复,仍然非常感谢任何帮助。它在我的资源文件夹中

0 投票
1 回答
753 浏览

java - 如何在自定义 AuthProvider 中使用 EventBus 修复“内部服务器错误”

在自定义 AuthProvider 中使用 vert.x EventBus 确实会在未来完成时给出“内部服务器错误”。

构建了一个自定义的 AuthProvider,它从 EventBus 获取用户数据。EventBus 和用户数据正确返回,但在 succeededFuture() 处理程序之后我只得到“内部服务器错误”。我是否弄乱了 EventBus.send() 的处理程序和异步模式?

在垂直

删除 eventbus.send() 使示例工作(获得正确的响应)。添加事件总线会使结果变得混乱,只会得到“内部服务器错误”而不是响应。

处理程序和异步 eventbus.send() 是否存在问题,还是我错过了其他一些重要的 vert.x 概念?

0 投票
1 回答
2050 浏览

vert.x - Vertx 的 EventBus 的 send 和 publish 方法有什么区别?

我第一次接触 Vertx 的 EventBus,我意识到有两种方法可以提交消息。使用了发送或发布方法。我问:使用这两种方法有什么实际区别,它们分别在什么场景下使用?