问题标签 [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.
reactive-programming - 运行多个实例时的 VertX eventbus.publish
我开始意识到 VertX 会将其事件总线发布 (eventbus.publish) 扇出到所有订阅的所有 verticle 实例。但是,如果我将 eventbus.send 用于特定地址,则该消息将被传递到目标 Verticle 的单个实例。我的要求是能够发布消息并将其传递到所有订阅者 Verticle 的单个实例。
简单地说,发布一条消息并确保它被所有订阅者接收,但只有一个给定订阅者的实例。
我可以构建中间组件来处理这个问题,但我正在寻找更多开箱即用的选项来解决这个问题。
PS我在集群模式下也试过这个,每个verticle有一个docker,结果是一样的。
java - vert.x eventloop 从 eventbus 消耗很慢
我们正在轮询来自 kafka 的消息(使用 Executor Thread)并将其放在 vert.x 事件总线上。最终,verticles(non-workers) 使用来自 eventbus 的这些消息。
我们测量了每条消息从 vertx eventbus 发送到它之后所花费的时间在峰值时可以达到 4 秒。
由于某种原因,有时事件总线需要很长时间才能使用消息但没有显示线程块错误,因此我们无法判断是什么延迟了它
奇怪的是我们没有看到任何事件循环块警告。我们还能做什么?cpu/ram 都很好。唯一可以实际显示的指标是:
但它没有告诉我们任何事情(不知道事件总线处理程序如何与事件循环延迟相关联)
我们应该检查什么来了解是什么让我们从 vert.x 事件总线的事件循环消耗变慢?
java - 如何在 vert.x 中为集合定义默认编解码器?
假设我有一个名为 的类,我可以为sUser
的集合注册一个编解码器吗?User
我尝试使用这个:
但它会产生这个错误:类文字的左侧只允许类。
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
vert.x - 基于事件总线的 Opentracing 传播
尝试为 opentracing Tracer 设置 java-vertx-web,按照自述文件在https://github.com/opentracing-contrib/java-vertx-web完成配置
TracingHandler
从使用instart()
方法
设置的 routingContext 重新激活 spantracer.activateSpan(CustomTracingHandler.serverSpan(routingContext));
此时,路由处理程序中的所有日志和跟踪都可以正常工作。
当在事件总线上发送消息时,跨度不活动的问题会重新出现。
尝试添加拦截器以注入标头,但跨度仍然不再处于活动状态。
有没有办法重新激活消息接收器上的跨度?
vert.x - Openapi 路由器工厂和事件总线
我们最近改变了我们的 api 以利用 openapi web 合约和 eventbus 的组合来为我们的客户发送和接收 api 响应。
它工作正常,直到今天我们注意到我们的大多数 api 都超时了,抛出了以下错误。
作为我们的消费者,我们无法调试甚至没有收到要回复的消息。我们的日志只有这些错误消息。
例如openapi web contract和eventbus setup,我们所有的api都是这样配置的
我们现在使用共享事件总线,而不是集群事件总线。事件总线可以处理的消息数量是否有任何限制?
rx-java2 - vert.x 的性能问题
当使用 apache bench 为 vert.x 应用程序运行测试时,我们看到响应时间随着并发用户数量的增加而增加。
此外,当测试运行时,如果我们从另一个控制台访问 API,我们会看到响应时间也会增加。
我们使用了以下代码:
路由器代码:
服务器创建:
处理方法:
工人垂直:
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 作为评论的回复,仍然非常感谢任何帮助。它在我的资源文件夹中
java - 如何在自定义 AuthProvider 中使用 EventBus 修复“内部服务器错误”
在自定义 AuthProvider 中使用 vert.x EventBus 确实会在未来完成时给出“内部服务器错误”。
构建了一个自定义的 AuthProvider,它从 EventBus 获取用户数据。EventBus 和用户数据正确返回,但在 succeededFuture() 处理程序之后我只得到“内部服务器错误”。我是否弄乱了 EventBus.send() 的处理程序和异步模式?
在垂直
删除 eventbus.send() 使示例工作(获得正确的响应)。添加事件总线会使结果变得混乱,只会得到“内部服务器错误”而不是响应。
处理程序和异步 eventbus.send() 是否存在问题,还是我错过了其他一些重要的 vert.x 概念?
vert.x - Vertx 的 EventBus 的 send 和 publish 方法有什么区别?
我第一次接触 Vertx 的 EventBus,我意识到有两种方法可以提交消息。使用了发送或发布方法。我问:使用这两种方法有什么实际区别,它们分别在什么场景下使用?