在Quarkus中配置集群Vertx Eventbus时出现问题



我使用的是:

  • Quarkus 1.6.1.最终版本
  • Vertx 3.9.1(由quarkus-Vertx依赖提供,请参阅下面的pom.xml(

而且我无法使集群Eventbus工作。我遵循了这里列出的说明:

https://vertx.io/docs/vertx-hazelcast/java/

我还在Quarkus中启用了集群:

quarkus.vertx.cluster.clustered=true
quarkus.vertx.cluster.port=8081
quarkus.vertx.prefer-native-transport=true
quarkus.http.port=8080

这是我的pom.xml:

<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-mutiny</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-vertx</artifactId>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-hazelcast</artifactId>
<version>3.9.2</version>
<exclusions>
<exclusion>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
</exclusion>
<!--                <exclusion>-->
<!--                    <groupId>com.hazelcast</groupId>-->
<!--                    <artifactId>hazelcast</artifactId>-->
<!--                </exclusion>-->
</exclusions>
</dependency>
<!--        <dependency>-->
<!--            <groupId>com.hazelcast</groupId>-->
<!--            <artifactId>hazelcast-all</artifactId>-->
<!--            <version>3.9</version>-->
<!--        </dependency>-->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<classifier>linux-x86_64</classifier>
</dependency>      
</dependencies>

我得到的错误如下:

Caused by: java.lang.ClassNotFoundException: com.hazelcast.core.MembershipListener

正如你在我的pom.xml中看到的,我还添加了依赖项hazecast-all:3.9,并从vertx hazecast:3.9.2中排除了hazecast依赖项,然后这个错误消失了,但又出现了另一个错误:

Caused by: com.hazelcast.config.InvalidConfigurationException: cvc-complex-type.2.4.a: Invalid content was found starting with element '{"http://www.hazelcast.com/schema/config":memcache-protocol}'. One of '{"http://www.hazelcast.com/schema/config":public-address, "http://www.hazelcast.com/schema/config":reuse-address, "http://www.hazelcast.com/schema/config":outbound-ports, "http://www.hazelcast.com/schema/config":join, "http://www.hazelcast.com/schema/config":interfaces, "http://www.hazelcast.com/schema/config":ssl, "http://www.hazelcast.com/schema/config":socket-interceptor, "http://www.hazelcast.com/schema/config":symmetric-encryption, "http://www.hazelcast.com/schema/config":member-address-provider}' is expected.

我是做错了什么还是忘记了什么,或者这只是Quarkus或Vertx中的一个错误?

请提前寻求任何帮助。

我认为您的问题最可能的原因是您使用的quarkus-universe-bom强制执行了与vertx-hazelcast不兼容的Hazelcast版本(我们在那里有一个Hazelccast扩展(。

使用mvn dependency:tree检查依赖关系树,并确保Hazelcast工件的版本为vertx-hazelcast所需的版本。

另一种选择是简单地使用不强制执行Hazelcast版本的quarkus-bom,并让vertx-hazelcast自己拖动依赖项。

这似乎是Quarkus中的一个错误,此问题与:有关

https://github.com/quarkusio/quarkus/issues/10889

把它从冬天的睡眠中带出来。。。

我希望使用quarkus 2+vert.x 4,并使用共享数据vert.x api或vert.x集群管理器,以实现进程内分布式缓存(与外部dist.cache集群相反(

我还不清楚的是,通过查看上面描述的git问题(这仍然是开放的(,我是否可以指望这些API在我提到的版本中为我工作。

任何评论都会很棒!

提前感谢。。。

[更新]:使用共享数据API以及quarkus、vertx、hazlecast&静默vertx的绑定(所有版本都是最新版本(。

我所需要做的就是在quarkus属性文件中设置quarkus.vertx.cluster.clustered=true,对分布式缓存使用vertx.sharedData((.getClusterWideMap实现,并添加gradle/maven'io.vertx:vertx-hazelcast:4.4.1'支持。

一般来说,这就是一个小poc代码所需要的全部内容。感谢

相关内容

  • 没有找到相关文章

最新更新