トピックへの WS サブスクリプションを使用してクラスター化された展開で WSO2 MB 2.2.0 をテストしました。プロジェクトのドキュメントに記載されている設定を複製しました。
クラスター内の最初のノードが起動すると、期待どおりに永続的なサブスクリプション キューが取得されます。ただし、2 番目以降のノードも永続的な接続を取得しようとし、ブローカーは例外をスローしてアクセスを拒否します。これはブローカー部分の予期される動作ですが、残りのノードのトピック管理部分がクラッシュするため、クラスターの残りのメンバーは使用可能な状態で起動できません。
これは既知の問題ですか、クラスターの予想される動作ですか? CarbonEventBroker コンポーネントがクラスター環境に適していないということですか?
これは、IService コンポーネントの起動中に発生した例外のログです (推測します)。
TID: [0] [MB] [2015-11-16 13:11:36,670] エラー {org.wso2.carbon.event.core.internal.builder.EventBrokerHandler} - イベント ブローカー {org.wso2. carbon.event.core.internal.builder.EventBrokerHandler} org.wso2.carbon.event.core.exception.EventBrokerConfigurationException: サブスクリプションを取得できません org.wso2.carbon.event.core.internal.CarbonEventBroker.loadExistingSubscriptions (CarbonEventBroker.java:83) で org.wso2.carbon.event.core.internal.CarbonEventBroker.init (CarbonEventBroker.java:67) で org.wso2.carbon.event.core.internal.CarbonEventBrokerFactory.getEventBroker (CarbonEventBrokerFactory.java:90) で org.wso2.carbon.event.core.internal.builder.EventBrokerBuilder.createEventBroker (EventBrokerBuilder.java:56) で org.wso2.carbon.event.core.internal.builder.EventBrokerHandler.startEventBroker (EventBrokerHandler.java:57) で org.wso2.carbon.event.core.internal.builder.EventBrokerHandler.notifyStart (EventBrokerHandler.java:96) で org.wso2.carbon.andes.internal.QpidServiceComponent.activate (QpidServiceComponent.java:258) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:606) で org.eclipse.equinox.internal.ds.model.ServiceComponent.activate (ServiceComponent.java:260) で org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate (ServiceComponentProp.java:146) で org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) で org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent (InstanceProcess.java:620) で org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents (InstanceProcess.java:197) で org.eclipse.equinox.internal.ds.Resolver.getEligible (Resolver.java:343) で org.eclipse.equinox.internal.ds.SCRManager.serviceChanged (SCRManager.java:222) で org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged (FilteredServiceListener.java:107) で org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent (BundleContextImpl.java:861) で org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)で org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous (ListenerQueue.java:148) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged (ServiceRegistry.java:819) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent (ServiceRegistry.java:771) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)で org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)で org.wso2.carbon.event.core.internal.builder.EventBrokerBuilderDS.activate (EventBrokerBuilderDS.java:69) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:606) で org.eclipse.equinox.internal.ds.model.ServiceComponent.activate (ServiceComponent.java:260) で org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate (ServiceComponentProp.java:146) で org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) で org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent (InstanceProcess.java:620) で org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents (InstanceProcess.java:197) で org.eclipse.equinox.internal.ds.Resolver.getEligible (Resolver.java:343) で org.eclipse.equinox.internal.ds.SCRManager.serviceChanged (SCRManager.java:222) で org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged (FilteredServiceListener.java:107) で org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent (BundleContextImpl.java:861) で org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)で org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous (ListenerQueue.java:148) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged (ServiceRegistry.java:819) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent (ServiceRegistry.java:771) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)で org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451)で org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon (CarbonServerManager.java:517) で org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:219) で org.wso2.carbon.core.internal.CarbonCoreServiceComponent.activate (CarbonCoreServiceComponent.java:77) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:606) で org.eclipse.equinox.internal.ds.model.ServiceComponent.activate (ServiceComponent.java:260) で org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate (ServiceComponentProp.java:146) で org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) で org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent (InstanceProcess.java:620) で org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents (InstanceProcess.java:197) で org.eclipse.equinox.internal.ds.Resolver.getEligible (Resolver.java:343) で org.eclipse.equinox.internal.ds.SCRManager.serviceChanged (SCRManager.java:222) で org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged (FilteredServiceListener.java:107) で org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent (BundleContextImpl.java:861) で org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)で org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous (ListenerQueue.java:148) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged (ServiceRegistry.java:819) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent (ServiceRegistry.java:771) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) で org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)で org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81) で org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60)で org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40) org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.init (DelegationServlet.java:38) で org.apache.catalina.core.StandardWrapper.initServlet (StandardWrapper.java:1267) で org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1186) で org.apache.catalina.core.StandardWrapper.load (StandardWrapper.java:1081) で org.apache.catalina.core.StandardContext.loadOnStartup (StandardContext.java:5027) で org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5314) で org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) で org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) で org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) で java.util.concurrent.FutureTask.run (FutureTask.java:262) で java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) で java.lang.Thread.run(Thread.java:745) で 原因: org.wso2.carbon.event.core.exception.EventBrokerException: トピック /msg/EVT-01 を購読できません既存の排他的なコンシューマーがある [エラー コード 403: アクセスが拒否されました] org.wso2.carbon.event.core.internal.delivery.jms.JMSDeliveryManager.subscribe(JMSDeliveryManager.java:136) で org.wso2.carbon.event.core.internal.CarbonEventBroker.loadExistingSubscriptions (CarbonEventBroker.java:79) で ... 88以上 原因: javax.jms.JMSException: コンシューマーの登録エラー: org.wso2.andes.AMQSecurityException: キュー carbon:bc4688e3fb936491cf1f524905ffbd9ef816e80bea175512 にサブスクライブできません。既存の排他的コンシューマーが既に存在するためです [エラー コード 403: アクセスが拒否されました] org.wso2.andes.client.AMQSession$5.execute (AMQSession.java:2084) で org.wso2.andes.client.AMQSession$5.execute (AMQSession.java:2027) で org.wso2.andes.client.AMQConnectionDelegate_8_0.executeRetrySupport(AMQConnectionDelegate_8_0.java:315) で org.wso2.andes.client.AMQConnection.executeRetrySupport (AMQConnection.java:621) で org.wso2.andes.client.failover.FailoverRetrySupport.execute (FailoverRetrySupport.java:102) で org.wso2.andes.client.AMQSession.createConsumerImpl (AMQSession.java:2025) で org.wso2.andes.client.AMQSession.createConsumer (AMQSession.java:1028) で org.wso2.andes.client.AMQSession.createDurableSubscriber (AMQSession.java:1177) で org.wso2.andes.client.AMQSession.createDurableSubscriber (AMQSession.java:1077) で org.wso2.andes.client.AMQTopicSessionAdaptor.createDurableSubscriber (AMQTopicSessionAdaptor.java:73) で org.wso2.carbon.event.core.internal.delivery.jms.JMSDeliveryManager.subscribe(JMSDeliveryManager.java:130)で ... 89以上 原因: org.wso2.andes.AMQSecurityException: キュー carbon:bc4688e3fb936491cf1f524905ffbd9ef816e80bea175512 にサブスクライブできません。既に既存の排他的コンシューマーがあるため [エラー コード 403: アクセスが拒否されました] org.wso2.andes.client.handler.ConnectionCloseMethodHandler.methodReceived (ConnectionCloseMethodHandler.java:85) で org.wso2.andes.client.handler.ClientMethodDispatcherImpl.dispatchConnectionClose (ClientMethodDispatcherImpl.java:192) で org.wso2.andes.framing.amqp_0_91.ConnectionCloseBodyImpl.execute (ConnectionCloseBodyImpl.java:140) で org.wso2.andes.client.state.AMQStateManager.methodReceived (AMQStateManager.java:111) で org.wso2.andes.client.protocol.AMQProtocolHandler.methodBodyReceived (AMQProtocolHandler.java:515) で org.wso2.andes.client.protocol.AMQProtocolSession.methodFrameReceived (AMQProtocolSession.java:461) で org.wso2.andes.framing.AMQMethodBodyImpl.handle (AMQMethodBodyImpl.java:96) で org.wso2.andes.client.protocol.AMQProtocolHandler$2.run (AMQProtocolHandler.java:466) で org.wso2.andes.pool.Job.processAll (Job.java:109) で org.wso2.andes.pool.Job.run(Job.java:157) で ... 3 つ以上 TID: [0] [MB] [2015-11-16 13:11:36,671] エラー {org.wso2.andes.client.AMQConnection} - スロー可能ですが、リスナーが設定されていません: org.wso2.andes.AMQException: サブスクライブできませんcarbon:bc4688e3fb936491cf1f524905ffbd9ef816e80bea175512 をキューに入れるには、既存の排他的なコンシューマが既にあるため [エラー コード 403: アクセスが拒否されました] {org.wso2.andes.client.AMQConnection}