One, start activemq mirroring
Start (docker start container name)
docker start myactivemq
- Some problems you may encounter halfway: solutions
Two, enter the container to view the location of the configuration file
docker exec -it daa8c6c30790 /bin/bash
Find the conf file
ls -s
Edit conf
vi conf
Press the up and down keys to select the activemq.xml file
Three, change the configuration file
The client-borker communication protocols supported by ActiveMQ are: TCP, NIO, UDP, SSL, HTTP(S), VM. The file for configuring the TransportConnector is in the label of conf/activemq.xml in the activeMQ installation directory.
Enter a to enter the edit mode and slide down to the specified page
Configuration information:
The header of the URL description information uses the protocol name
- Describe the listening port of the amqp protocol, using the URL description format "amqp://..."
- Describe the listening port of the Stomp protocol, using the URL description format "stomp://..."
- Aloneopenwire protocolWhen describing, the URL header uses "tcp://..." because: the default message protocol in activeMQ is openwire
Insert selected area
<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>
As shown in the figure, press the ESC key to exit the editing mode, and then type to :wq
save and exit
Fourth, restart the mirror
exit
docker restart myactive #这里使用自己的的容器名称
Configuration is successful
Five, test
- Producer
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();
}
}
- consumer
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("接收完成");
}
}
Six, nio strengthens the agreement
<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"/>
Configure as shown in the figure and log out the previous default protocols
Test 1:public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61608";
- Producer
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();
}
}
- consumer
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("接收完成");
}
}
Test successful
Test 2: TCP protocol
producer
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();
}
}
consumer
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("接收完成");
}
}
testing successfully