gpt4 book ai didi

java - 顶点 3 : Undeploy verticles which are running in different JVM instance

转载 作者:行者123 更新时间:2023-11-30 02:47:20 25 4
gpt4 key购买 nike

我有两个顶点,分别为“A”和“B”。两者都运行在不同的 JVM 实例中。现在,A向B发送消息“操作成功,您可以自行取消部署”。当 B 收到此消息时,它应该取消部署自己。

我尝试了两种选择:1. vertx.close(); (a) 如果 Verticle B 在不同的命令提示符下打开。 (b) 如果 Verticle B 未在不同的命令提示符中打开。2. vertx.undeploy(deploymentID(),); Verticle B 作为不同的 cmd 提示符以及相同的 cmd 提示符打开(Verticle cmd 提示符...在后台运行)

在 1->(a) 中,Verticle B 已关闭,但 cmd 提示符仍然打开。在1->(b)中,Verticle B没有关闭,JVM也在运行。在第二种情况下,我收到以下错误消息:

java.lang.IllegalStateException: Unknown deployment
at io.vertx.core.impl.DeploymentManager.undeployVerticle(DeploymentManager.java:203)
at io.vertx.core.impl.VertxImpl.undeploy(VertxImpl.java:587)
at x.y.z.AVerticle.lambda$null$1(AVerticle.java:118)
at io.vertx.core.eventbus.impl.EventBusImpl.lambda$convertHandler$1(EventBusImpl.java:334)
at io.vertx.core.eventbus.impl.HandlerRegistration.deliver(HandlerRegistration.java:213)
at io.vertx.core.eventbus.impl.HandlerRegistration.handle(HandlerRegistration.java:192)
at io.vertx.core.eventbus.impl.EventBusImpl.lambda$deliverToHandler$3(EventBusImpl.java:503)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$3(ContextImpl.java:359)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:339)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:393)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742)
at java.lang.Thread.run(Unknown Source)

有人知道该怎么做吗?谢谢:)

最佳答案

我为类似的情况做了一个示例,其中要求是取消部署然后终止 jvm。

https://github.com/floriankammermann/vertx-examples/tree/master/self-terminating您也可以使用此代码。您只需删除 https://github.com/floriankammermann/vertx-examples/blob/master/self-terminating/src/main/java/org/swisspush/vertx/examples/SelfTerminated.java 中的 System.exit(0);

这里的一个限制是,您也必须以编程方式部署 Verticle。

在您的情况下,verticle A 和 B 必须通过分布式事件总线连接(可以相互发送消息)。 verticle doSomething.js 是您案例中的 verticle B 。 verticle A 部署在哪里并不重要。 verticle A 唯一要做的就是向地址“finished”发送/发布消息。这将取消部署 verticle B。

关于java - 顶点 3 : Undeploy verticles which are running in different JVM instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com