私はhornetqコアAPIと春のHAでhornetqクライアントを定義しようとしています。 しかし、ライブサーバーを停止し、バックアップサーバーが "ライブ"になると、クライアントは接続エラーで失敗します。私が間違っていることは何か考えていますか?クラスタ化されたhornetqクライアントを春に設定する
クラスタ化されたスタンドアロンのhornetqサーバー(グループまたは検出なし)を定義しました。 HornetQは-configuration.xmlの:
...
<connectors>
<connector name="netty">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="${hornetq.remoting.netty.host:live-host}"/>
<param key="port" value="${hornetq.remoting.netty.port:5445}"/>
</connector>
<!-- Connector to this server.s backup. This is needed for failback to work properly in a static cluster -->
<connector name="netty-backup">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="${hornetq.remoting.netty.host:backup-host}"/>
<param key="port" value="${hornetq.remoting.netty.port:5446}"/>
</connector>
<cluster-connections>
<cluster-connection name="my-cluster">
<address>jms</address>
<connector-ref>netty</connector-ref>
<retry-interval>500</retry-interval>
<use-duplicate-detection>true</use-duplicate-detection>
<forward-when-no-consumers>false</forward-when-no-consumers>
<max-hops>1</max-hops>
<static-connectors>
<!-- Without this the connection factory won.t be able to reconnect on failback -->
<connector-ref>netty-backup</connector-ref>
</static-connectors>
</cluster-connection>
...
私はHornetQのクライアントを定義した:
@Test
public void testHA() throws InterruptedException, IOException{
List<TransportConfiguration> transportConfigurationList = new ArrayList<TransportConfiguration>();
Map<String, Object> transportProperties = new HashMap<String, Object>();
transportProperties.put("host", "live-server");
transportProperties.put("port", 5445);
transportConfigurationList.add(new TransportConfiguration("org.hornetq.core.remoting.impl.netty.NettyConnectorFactory", transportProperties));
transportProperties = new HashMap<String, Object>();
transportProperties.put("host", "backup-server");
transportProperties.put("port", 5446);
transportConfigurationList.add(new TransportConfiguration("org.hornetq.core.remoting.impl.netty.NettyConnectorFactory", transportProperties));
HornetQJMSConnectionFactory connectionFactory = new HornetQJMSConnectionFactory(true, transportConfigurationList.toArray(new TransportConfiguration[2]));
JmsTemplate producer = new JmsTemplate(connectionFactory);
producer.send(new HornetQTopic("deploy"), new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage txtMessage = session.createTextMessage("my message");
return txtMessage;
}
});
System.out.println("Stop live server");
System.in.read();
producer.send(new HornetQTopic("deploy"), new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage txtMessage = session.createTextMessage("my message");
return txtMessage;
}
});
Thread.sleep(60000);
}
OUTPUT:
Stop live server
Apr 30, 2012 5:08:32 PM org.hornetq.core.logging.impl.JULLogDelegate warn
WARNING: Tried 1 times to connect. Now giving up on reconnecting it.
また
、ライブサーバーがエラーログに記録している:
- [スレッド-4(HornetQのサーバ・HornetQServerImpl :: serverUUID = 70ca0e65-8ecf-11e1-82e8-d5eac4a07302-1433965066)] 1-5月8日に:27:57,976 FINE [ServerLocatorImpl]コネクタ[initialConnector = org-hornetq-core-remoting-impl-netty-NettyConnectorFactory?port = 5446 & host = 10-45-7-150] ::コネクタの初期接続を確立する際の例外 HornetQException [errorCode = 2 message =構成org-hornetq-core-remoting-impl-netty-NettyConnectorFactory?port = 5446 & host = backup-server]を使用してサーバーに接続できません。 をorg.hornetq.core.client.impl.ClientSessionFactoryImplに追加してください.connect(Clien (ServerLocatorImpl.java:234) at org.hornetq.core.client.impl.ServerLocatorImpl $ StaticConnector $ Connector.tryConnect(ServerLocatorImpl.java:1777) at org.hornetq.core.client.impl.ServerLocatorImpl $ StaticConnector.connect ServerLocatorImpl.java:1614) at org.hornetq.core.client.impl.ServerLocatorImpl.connect(ServerLocatorImpl.java:587) at org.hornetq.core.client.impl.ServerLocatorImpl $ 3.run(ServerLocatorImpl.java:554) ) at org.hornetq.utils.OrderedExecutorFactory $ OrderedExecutor $ 1.run(OrderedExecutorFactory.java:100) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent。 ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) (java.lang.Thread.run)(Thread.java:662)