Uno, inicie la duplicación de activemq
Inicio (nombre del contenedor de inicio de la ventana acoplable)
docker start myactivemq
- Algunos problemas que puede encontrar a mitad de camino: soluciones
Dos, ingrese al contenedor para ver la ubicación del archivo de configuración
docker exec -it daa8c6c30790 /bin/bash
Encuentra el archivo conf
ls -s
Editar conf
vi conf
Presione las teclas de arriba y abajo para seleccionar el archivo activemq.xml
Tres, cambia el archivo de configuración
Los protocolos de comunicación cliente-borker admitidos por ActiveMQ son: TCP, NIO, UDP, SSL, HTTP (S), VM El archivo para configurar TransportConnector se encuentra en la etiqueta conf / activemq.xml en el directorio de instalación de activeMQ.
Ingrese a para ingresar al modo de edición y deslícese hacia abajo hasta la página especificada
Información de configuración:
el encabezado de la información de descripción de la URL utiliza el nombre del protocolo
- Describe el puerto de escucha del protocolo amqp, usando el formato de descripción de URL "amqp: // ..."
- Describe el puerto de escucha del protocolo Stomp, usando el formato de descripción de URL "stomp: // ..."
- Soloprotocolo openwireAl describir, el encabezado de la URL usa "tcp: // ..." porque: el protocolo de mensaje predeterminado en activeMQ es openwire
Insertar área seleccionada
<transportConnector name="nio" uri="nio://0.0.0.0:61618?trace=true"/>
Como se muestra en la figura, presione la tecla ESC para salir del modo de edición y luego escriba para :wq
guardar y salir
Cuarto, reinicia el espejo
exit
docker restart myactive #这里使用自己的的容器名称
La configuración es exitosa
Cinco, prueba
- Productor
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();
}
}
- consumidor
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("接收完成");
}
}
Seis, nio refuerza el acuerdo
<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 como se muestra en la figura y cierre la sesión de los protocolos predeterminados anteriores
Prueba 1:public static final String ACTIVEEMQ_URL = "tcp://192.168.56.10:61608";
- Productor
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();
}
}
- consumidor
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("接收完成");
}
}
Prueba exitosa
Prueba 2:
productor de protocolo 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();
}
}
consumidor
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("接收完成");
}
}
probando exitosamente