'java.lang.NoSuchMethodError' для jgroups ActiveMQ Artemis

Я создаю кластер ActiveMQ Artemis, используя Kubernetes Ping от JGroup. После обновления до 2.33.0 я получаю java.lang.NoSuchMethodError. Похоже, JGroups до 5.3.2.Final нужно что-то сделать.

2024-04-28 06:51:47,578 INFO  [org.apache.activemq.artemis.integration.bootstrap] AMQ101000: Starting ActiveMQ Artemis Server version 2.33.0
2024-04-28 06:51:47,603 INFO  [org.apache.activemq.artemis.core.server] AMQ221000: Primary message broker is starting with configuration Broker Configuration (clustered=true,journalDirectory=data/journal,bindingsDirectory=data/bindings,largeMessagesDirectory=data/large-messages,pagingDirectory=data/paging)
2024-04-28 06:51:47,721 WARN  [org.jgroups.stack.Configurator] CENTRAL_LOCK has been deprecated; please upgrade to a newer version of the protocol
2024-04-28 06:51:47,774 INFO  [org.jgroups.protocols.kubernetes.KUBE_PING] namespace amq-ap-dev set; clustering enabled
2024-04-28 06:51:47,779 INFO  [org.jgroups.JChannel] local_addr: e0449f9d-ef60-4a9d-b412-da5b85719e3d, name: activemq-1-statefulset-0-57906

-------------------------------------------------------------------
GMS: address=activemq-1-statefulset-0-57906, cluster=active_broadcast_channel, physical address=10.1.0.159:7800
-------------------------------------------------------------------
2024-04-28 06:51:51,061 INFO  [org.jgroups.protocols.pbcast.GMS] activemq-1-statefulset-0-57906: no members discovered after 3273 ms: creating cluster as coordinator
2024-04-28 06:52:01,219 INFO  [org.apache.activemq.artemis.core.server] AMQ221012: Using AIO Journal
2024-04-28 06:52:01,270 WARN  [org.jgroups.stack.Configurator] CENTRAL_LOCK has been deprecated; please upgrade to a newer version of the protocol
2024-04-28 06:52:01,275 INFO  [org.jgroups.protocols.kubernetes.KUBE_PING] namespace amq-ap-dev set; clustering enabled
2024-04-28 06:52:01,282 INFO  [org.jgroups.JChannel] local_addr: 6ab26800-294a-4629-9250-40a98a4a2e92, name: activemq-1-statefulset-0-58068

-------------------------------------------------------------------
GMS: address=activemq-1-statefulset-0-58068, cluster=active_broadcast_channel, physical address=10.1.0.159:7800
-------------------------------------------------------------------
2024-04-28 06:52:01,349 ERROR [org.apache.activemq.artemis.core.server] AMQ224097: Failed to start server
java.lang.NoSuchMethodError: 'org.jgroups.util.ByteArray org.jgroups.protocols.kubernetes.KUBE_PING.marshal(org.jgroups.protocols.PingData)'
        at org.jgroups.protocols.kubernetes.KUBE_PING.findMembers(KUBE_PING.java:278) ~[jgroups-kubernetes-2.0.2.Final.jar:?]
        at org.jgroups.protocols.Discovery.callFindMembersInAllDiscoveryProtocols(Discovery.java:393) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.Discovery.findMembers(Discovery.java:240) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.Discovery.down(Discovery.java:430) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.MERGE3.down(MERGE3.java:268) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.FD_SOCK.down(FD_SOCK.java:411) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.FailureDetection.down(FailureDetection.java:159) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.VERIFY_SUSPECT.down(VERIFY_SUSPECT.java:102) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.BARRIER.down(BARRIER.java:138) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.pbcast.NAKACK2.down(NAKACK2.java:635) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.UNICAST3.down(UNICAST3.java:653) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.pbcast.STABLE.down(STABLE.java:275) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.pbcast.ClientGmsImpl.joinInternal(ClientGmsImpl.java:67) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.pbcast.ClientGmsImpl.join(ClientGmsImpl.java:37) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.pbcast.GMS.down(GMS.java:900) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.FlowControl.down(FlowControl.java:201) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.stack.Protocol.down(Protocol.java:309) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.FRAG2.down(FRAG2.java:103) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.pbcast.STATE_TRANSFER.down(STATE_TRANSFER.java:205) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.COUNTER.down(COUNTER.java:241) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.protocols.Locking.down(Locking.java:226) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.stack.ProtocolStack.down(ProtocolStack.java:947) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.JChannel.down(JChannel.java:601) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.JChannel._connect(JChannel.java:803) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.JChannel.connect(JChannel.java:326) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.jgroups.JChannel.connect(JChannel.java:317) ~[jgroups-5.3.2.Final.jar:5.3.2.Final]
        at org.apache.activemq.artemis.api.core.jgroups.JChannelWrapper.connect(JChannelWrapper.java:127) ~[artemis-core-client-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.api.core.JGroupsBroadcastEndpoint.internalOpen(JGroupsBroadcastEndpoint.java:124) ~[artemis-core-client-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.api.core.JGroupsBroadcastEndpoint.openClient(JGroupsBroadcastEndpoint.java:102) ~[artemis-core-client-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.cluster.DiscoveryGroup.start(DiscoveryGroup.java:113) ~[artemis-core-client-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.startDiscovery(ServerLocatorImpl.java:298) ~[artemis-core-client-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.initialize(ServerLocatorImpl.java:282) ~[artemis-core-client-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.cluster.ClusterController.configAndAdd(ClusterController.java:245) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.cluster.ClusterController.addClusterConnection(ClusterController.java:207) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deployClusterConnection(ClusterManager.java:632) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deploy(ClusterManager.java:249) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:3324) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.impl.SharedNothingPrimaryActivation.run(SharedNothingPrimaryActivation.java:115) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:738) ~[artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:628) [artemis-server-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:66) [artemis-cli-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:130) [artemis-cli-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:221) [artemis-cli-2.33.0.jar:2.33.0]
        at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:167) [artemis-cli-2.33.0.jar:2.33.0]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:157) [artemis-boot.jar:2.33.0]
        at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:64) [artemis-boot.jar:2.33.0]
java.lang.NoSuchMethodError: 'org.jgroups.util.ByteArray org.jgroups.protocols.kubernetes.KUBE_PING.marshal(org.jgroups.protocols.PingData)'
        at org.jgroups.protocols.kubernetes.KUBE_PING.findMembers(KUBE_PING.java:278)
        at org.jgroups.protocols.Discovery.callFindMembersInAllDiscoveryProtocols(Discovery.java:393)
        at org.jgroups.protocols.Discovery.findMembers(Discovery.java:240)
        at org.jgroups.protocols.Discovery.down(Discovery.java:430)
        at org.jgroups.protocols.MERGE3.down(MERGE3.java:268)
        at org.jgroups.protocols.FD_SOCK.down(FD_SOCK.java:411)
        at org.jgroups.protocols.FailureDetection.down(FailureDetection.java:159)
        at org.jgroups.protocols.VERIFY_SUSPECT.down(VERIFY_SUSPECT.java:102)
        at org.jgroups.protocols.BARRIER.down(BARRIER.java:138)
        at org.jgroups.protocols.pbcast.NAKACK2.down(NAKACK2.java:635)
        at org.jgroups.protocols.UNICAST3.down(UNICAST3.java:653)
        at org.jgroups.protocols.pbcast.STABLE.down(STABLE.java:275)
        at org.jgroups.protocols.pbcast.ClientGmsImpl.joinInternal(ClientGmsImpl.java:67)
        at org.jgroups.protocols.pbcast.ClientGmsImpl.join(ClientGmsImpl.java:37)
        at org.jgroups.protocols.pbcast.GMS.down(GMS.java:900)
        at org.jgroups.protocols.FlowControl.down(FlowControl.java:201)
        at org.jgroups.stack.Protocol.down(Protocol.java:309)
        at org.jgroups.protocols.FRAG2.down(FRAG2.java:103)
        at org.jgroups.protocols.pbcast.STATE_TRANSFER.down(STATE_TRANSFER.java:205)
        at org.jgroups.protocols.COUNTER.down(COUNTER.java:241)
        at org.jgroups.protocols.Locking.down(Locking.java:226)
        at org.jgroups.stack.ProtocolStack.down(ProtocolStack.java:947)
        at org.jgroups.JChannel.down(JChannel.java:601)
        at org.jgroups.JChannel._connect(JChannel.java:803)
        at org.jgroups.JChannel.connect(JChannel.java:326)
        at org.jgroups.JChannel.connect(JChannel.java:317)
        at org.apache.activemq.artemis.api.core.jgroups.JChannelWrapper.connect(JChannelWrapper.java:127)
        at org.apache.activemq.artemis.api.core.JGroupsBroadcastEndpoint.internalOpen(JGroupsBroadcastEndpoint.java:124)
        at org.apache.activemq.artemis.api.core.JGroupsBroadcastEndpoint.openClient(JGroupsBroadcastEndpoint.java:102)
        at org.apache.activemq.artemis.core.cluster.DiscoveryGroup.start(DiscoveryGroup.java:113)
        at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.startDiscovery(ServerLocatorImpl.java:298)
        at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.initialize(ServerLocatorImpl.java:282)
        at org.apache.activemq.artemis.core.server.cluster.ClusterController.configAndAdd(ClusterController.java:245)
        at org.apache.activemq.artemis.core.server.cluster.ClusterController.addClusterConnection(ClusterController.java:207)
        at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deployClusterConnection(ClusterManager.java:632)
        at org.apache.activemq.artemis.core.server.cluster.ClusterManager.deploy(ClusterManager.java:249)
        at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:3324)
        at org.apache.activemq.artemis.core.server.impl.SharedNothingPrimaryActivation.run(SharedNothingPrimaryActivation.java:115)
        at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:738)
        at org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:628)
        at org.apache.activemq.artemis.integration.FileBroker.start(FileBroker.java:66)
        at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:130)
        at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:221)
        at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:167)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:157)
        at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:64)

Это XML JGroups, который я использую:

<config xmlns = "urn:org:jgroups"
 xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation = "urn:org:jgroups http://www.jgroups.org/schema/jgroups.xsd">
 <TCP
 external_addr = "${JGROUPS_EXTERNAL_ADDR:match-interface:eth0}"
 bind_addr = "site_local,match-interface:eth0"
 bind_port = "${TCP_PORT:7800}"
 recv_buf_size = "5M"
 send_buf_size = "1M"
 thread_naming_pattern = "cl"
 thread_pool.min_threads = "2"
 thread_pool.max_threads = "500"
 thread_pool.keep_alive_time = "30000" />
 <RED/>

 <org.jgroups.protocols.kubernetes.KUBE_PING port_range = "0" namespace = "${KUBERNETES_NAMESPACE:amq-ap-dev}"
 labels = "app=activemq-active-active" masterHost = "kubernetes.default.svc" masterPort = "443" masterProtocol = "https"
 caCertFile = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
 saTokenFile = "/var/run/secrets/kubernetes.io/serviceaccount/token"
 />

 <MERGE3 max_interval = "30000"

 min_interval = "10000"/>

 <FD_SOCK external_addr = "${JGROUPS_EXTERNAL_ADDR}"

 start_port = "${FD_SOCK_PORT:9000}"/>

 <FD_ALL timeout = "30000" interval = "5000"/>

 <VERIFY_SUSPECT timeout = "1500" />

 <BARRIER />

 <pbcast.NAKACK2 xmit_interval = "500"

 xmit_table_num_rows = "100"

 xmit_table_msgs_per_row = "2000"

 xmit_table_max_compaction_time = "30000"

 use_mcast_xmit = "false"

 discard_delivered_msgs = "true" />

 <UNICAST3

 xmit_table_num_rows = "100"

 xmit_table_msgs_per_row = "1000"

 xmit_table_max_compaction_time = "30000"/>

 <pbcast.STABLE desired_avg_gossip = "50000"

 max_bytes = "8m"/>

 <pbcast.GMS print_local_addr = "true" join_timeout = "3000"/>

 <MFC max_credits = "2M"

 min_threshold = "0.4"/>

 <FRAG2 frag_size = "60K" />

 <pbcast.STATE_TRANSFER />

 <COUNTER/>

 <CENTRAL_LOCK />

</config>

Я добавил эти jar-файлы для JGroups Kubernetes в папку lib экземпляра ActiveMQ Artemis:

jgroups-kubernetes-2.0.2.Final.jar
kubernetes-client-6.12.1.jar

Какую банку мне следует добавить, чтобы не возникнуть эта проблема?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы столкнулись с ошибкой в ​​JGroups 5.3.2.Final. Рассматриваемый метод существовал в версии 5.3.1.Final. Затем он был удален в 5.3.2.Final и, наконец, добавлен обратно в 5.3.3.Final.

Если вы скачаете JGroups 5.3.3.Final и развернете его в ActiveMQ Artemis, это должно решить проблему.

Это будет исправлено в ActiveMQ Artemis 2.34.0 благодаря ARTEMIS-4728.

Спасибо за подтверждение того, что это реальная ошибка. Есть какие-нибудь ориентировочные даты выхода 2.34.0?

Subhidh Agarwal 29.04.2024 07:39

Я ожидаю, что версия 2.34.0 будет выпущена в ближайшие несколько недель.

Justin Bertram 29.04.2024 16:17

Другие вопросы по теме