1つは、activemqミラーリングを開始する
開始(docker startコンテナー名)
docker start myactivemq
- 途中で遭遇する可能性のあるいくつかの問題:解決策
2つ目は、コンテナーを入力して構成ファイルの場所を表示することです。
docker exec -it daa8c6c30790 /bin/bash
confファイルを探す
ls -s
confを編集する
vi conf
上下のキーを押して、activemq.xmlファイルを選択します
3、構成ファイルを変更します
ActiveMQでサポートされているクライアントボーカー通信プロトコルは、TCP、NIO、UDP、SSL、HTTP(S)、VMです。TransportConnectorを構成するためのファイルは、activeMQインストールディレクトリのconf /activemq.xmlのラベルにあります。
aを入力して編集モードに入り、指定したページにスライドダウンします
構成情報:
URL記述情報のヘッダーはプロトコル名を使用します
- URL記述形式「amqp:// ...」を使用して、amqpプロトコルのリスニングポートを記述します。
- URL記述形式「stomp:// ...」を使用して、Stompプロトコルのリスニングポートを記述します。
- 一人でopenwireプロトコル説明するとき、URLヘッダーは「tcp:// ...」を使用します。理由は次のとおりです。activeMQのデフォルトのメッセージプロトコルはopenwireです
選択した領域を挿入します
<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>
図に示すように、ESCキーを押して編集モードを終了し、入力して:wq
保存して終了します
第四に、ミラーを再起動します
exit
docker restart myactive #这里使用自己的的容器名称
構成は成功しました
5、テスト
- プロデューサー
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import javax.jms.Connection;
import javax.jms.JMSException;
public class JMSProduce {
//public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61616";
public static final String ACTIVEEMQ_URL = "nio://192.168.56.10:61618";
//public static final String QUEUE_NAME = "queue01";
public static final String QUEUE_NAME = "tansport";
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVEEMQ_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
//创建服务对象session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地Destination
Queue queue = session.createQueue(QUEUE_NAME);
//创建生产者,传入地址
MessageProducer producer = session.createProducer(queue);
//创建消息
for(int i=0;i<6;i++){
Message message = session.createTextMessage("tansport"+i);
//生产者发送消息
producer.send(message);
}
System.out.println("success");
//关闭连接
producer.close();
session.close();
connection.close();
}
}
- 消費者
package T1;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
public class JMSConsumer {
public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61618";
public static final String QUEUE_NAME = "tansport";
public static void main(String[] args) throws JMSException, IOException {
System.out.println("消费者2");
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVEEMQ_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
//创建服务对象session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地Destination --->ActiveMQ的接收点
Queue queue = session.createQueue(QUEUE_NAME);
//创建生产者
MessageConsumer messageConsumer = session.createConsumer(queue);
/*
while (true){
TextMessage message = (TextMessage) messageConsumer.receive();
if (message != null){
System.out.println("consumer消息接收"+message.getText());
}else {
break;
}
}
*/
//监听的方式接收消息MessageListener()
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if( null != message && message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("consumer消息接收"+textMessage.getText());
}
catch (Exception e){
e.printStackTrace();
}
}
}
});
//保证控制台一直在线
System.in.read();
messageConsumer.close();
session.close();
connection.close();
System.out.println("接收完成");
}
}
6、nioは合意を強化します
<transportConnector name="auto+nio" uri="auto+nio://0.0.0.0:61608?maximumConnection=1000&wireFormat.maxFrameSize=104857600&org.apache.activemq.transport.nio.SelectorManager.corePoolSize=20&org.apache.activemq.transport.nio.SelectorManager.maximumPoolSize=50"/>
図に示すように構成し、以前のデフォルトプロトコルからログアウトします
テスト1:public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61608";
- プロデューサー
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import javax.jms.Connection;
import javax.jms.JMSException;
public class JMSProduce {
//public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61616";
public static final String ACTIVEEMQ_URL = "nio://192.168.56.10:61608";
//public static final String QUEUE_NAME = "queue01";
public static final String QUEUE_NAME = "nio-test";
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVEEMQ_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
//创建服务对象session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地Destination
Queue queue = session.createQueue(QUEUE_NAME);
//创建生产者,传入地址
MessageProducer producer = session.createProducer(queue);
//创建消息
for(int i=0;i<6;i++){
Message message = session.createTextMessage("niotest"+i);
//生产者发送消息
producer.send(message);
}
System.out.println("success");
//关闭连接
producer.close();
session.close();
connection.close();
}
}
- 消費者
package T1;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
public class JMSConsumer {
//public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61617";
public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61608";
//public static final String QUEUE_NAME = "queue01";
public static final String QUEUE_NAME = "nio-test";
public static void main(String[] args) throws JMSException, IOException {
System.out.println("消费者2");
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVEEMQ_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
//创建服务对象session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地Destination --->ActiveMQ的接收点
Queue queue = session.createQueue(QUEUE_NAME);
//创建生产者
MessageConsumer messageConsumer = session.createConsumer(queue);
/*
while (true){
TextMessage message = (TextMessage) messageConsumer.receive();
if (message != null){
System.out.println("consumer消息接收"+message.getText());
}else {
break;
}
}
*/
//监听的方式接收消息MessageListener()
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if( null != message && message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("consumer消息接收"+textMessage.getText());
}
catch (Exception e){
e.printStackTrace();
}
}
}
});
//保证控制台一直在线
System.in.read();
messageConsumer.close();
session.close();
connection.close();
System.out.println("接收完成");
}
}
テスト成功
テスト2:TCPプロトコル
プロデューサー
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import javax.jms.Connection;
import javax.jms.JMSException;
public class JMSProduce {
//public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61616";
public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61608";
//public static final String QUEUE_NAME = "queue01";
public static final String QUEUE_NAME = "tcp-test";
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVEEMQ_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
//创建服务对象session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地Destination
Queue queue = session.createQueue(QUEUE_NAME);
//创建生产者,传入地址
MessageProducer producer = session.createProducer(queue);
//创建消息
for(int i=0;i<6;i++){
Message message = session.createTextMessage("tcptest"+i);
//生产者发送消息
producer.send(message);
}
System.out.println("success");
//关闭连接
producer.close();
session.close();
connection.close();
}
}
消費者
package T1;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
public class JMSConsumer {
//public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61617";
public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61608";
//public static final String QUEUE_NAME = "queue01";
public static final String QUEUE_NAME = "tcp-test";
public static void main(String[] args) throws JMSException, IOException {
System.out.println("消费者2");
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVEEMQ_URL);
Connection connection = connectionFactory.createConnection();
connection.start();
//创建服务对象session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地Destination --->ActiveMQ的接收点
Queue queue = session.createQueue(QUEUE_NAME);
//创建生产者
MessageConsumer messageConsumer = session.createConsumer(queue);
/*
while (true){
TextMessage message = (TextMessage) messageConsumer.receive();
if (message != null){
System.out.println("consumer消息接收"+message.getText());
}else {
break;
}
}
*/
//监听的方式接收消息MessageListener()
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if( null != message && message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("consumer消息接收"+textMessage.getText());
}
catch (Exception e){
e.printStackTrace();
}
}
}
});
//保证控制台一直在线
System.in.read();
messageConsumer.close();
session.close();
connection.close();
System.out.println("接收完成");
}
}
テストに成功