ActiveMQフォールトトレランスリンクテスト
3208 ワード
ActiveMQフォールトトレランスリンクテスト
前回のブログに基づいて、環境は前節のものを利用していますが、構築していなければ、前編を参考にすることができます.
接続されたBrokerがオフになった場合、Clientはこの問題を解決するために2つの戦略をとることができます.
1.クラスタ内の他のノードの接続を試みる
2.直接終了して戻る
では、今回のテストのFailOverは1つ目です.
あまり話さないで、前のブログの環境を直接起動します.次に、コードを入力します.
テストによる発見: true として指定すると両ノードが存在する場合、任意のノードにメッセージ が随意に送信される.両ノードの一方がドロップすると、メッセージ が他方に送信される. falseとして指定する場合、指定したサーバに優先的にメッセージ を送信する.
消費者コード:
テストの効果は生産者と同じです.
まとめ:リンク方式はfailoverリンククラスタを使用し、ActiveMQが提供するフォールトトレランスリンクのメカニズムであり、クラスタの一部のノードが停止した後も他のノードに接続できることを保証する.
前回のブログに基づいて、環境は前節のものを利用していますが、構築していなければ、前編を参考にすることができます.
接続されたBrokerがオフになった場合、Clientはこの問題を解決するために2つの戦略をとることができます.
1.クラスタ内の他のノードの接続を試みる
2.直接終了して戻る
では、今回のテストのFailOverは1つ目です.
あまり話さないで、前のブログの環境を直接起動します.次に、コードを入力します.
package com.burgess.net;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
*
* BurgessLee
* 2020/5/30
*
*/
public class FailOverTest {
public static void main(String[] args) throws JMSException {
// randomize=true , false,
String url01="failover:(tcp://192.168.31.150:61616,tcp://192.168.31.150:61617)?randomize=true";
ActiveMQConnectionFactory connFactory = new ActiveMQConnectionFactory(url01);
Connection conn =connFactory.createConnection();
conn.start();
Session session = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
try {
Queue queue = session.createQueue("fail-over-queue");
MessageProducer producer = session.createProducer(queue);
for (int i = 0; i < 30; i++) {
TextMessage message = session.createTextMessage("message--" + i);
producer.send(message);
}
}catch(Exception e){
e.printStackTrace();
}finally{
session.commit();
session.close();
conn.close();
}
}
}
テストによる発見:
消費者コード:
package com.burgess.net;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
*
* BurgessLee
* 2020/5/30
*
*/
public class FailOverConsumerTest {
public static void main(String[] args) throws JMSException {
// randomize=true , false,
String url01="failover:(tcp://192.168.31.150:61616,tcp://192.168.31.150:61617)?randomize=true";
ActiveMQConnectionFactory connFactory = new ActiveMQConnectionFactory(url01);
Connection conn = connFactory.createConnection();
conn.start();
Session session = conn.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
try {
Queue queue = session.createQueue("fail-over-queue");
MessageConsumer consumer = session.createConsumer(queue);
for (int i = 0; i < 30; i++) {
Message message = consumer.receive();
String jmsType = message.getJMSType();
System.out.println(" :"+jmsType);
TextMessage tx=(TextMessage)message;
session.commit();
System.out.println(" :"+tx.getText());
// 1
Thread.sleep(1000);
}
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
conn.close();
}
}
}
テストの効果は生産者と同じです.
まとめ:リンク方式はfailoverリンククラスタを使用し、ActiveMQが提供するフォールトトレランスリンクのメカニズムであり、クラスタの一部のノードが停止した後も他のノードに接続できることを保証する.