拉取镜像
docker pull docker.io/webcenter/activemq
启动容器
docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 docker.io/webcenter/activemq:latest
这样就代表启动成功了
浏览器访问
admin admin
开启验证
修改配置文件/opt/activemq/conf/activemq.xml
/opt/activemq/conf# vi activemq.xml
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="guest" password="guest" groups="guests"/>
<authenticationUser username="user" password="user" groups="users"/>
<authenticationUser username="admin" password="admin" groups="admins"/>
<authenticationUser username="artemis" password="artemis" groups="admins"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
修改完重启镜像即可
通过java代码生产,消费activemq
生产者
package com.activemq.demo;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class ActiveMQProducer {
private static final String DEFAULT_BROKER_HOST = "tcp://localhost:61616";
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(DEFAULT_BROKER_HOST);
// 获取 connection
final Connection connection = connectionFactory.createConnection("admin", "admin");
// 启动
connection.start();
// 创建会话 session,参数第一个是事务,第二个是签收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目的地,queue 或者 topic
Queue queue = session.createQueue("testq1804");
创建消息的生产者
MessageProducer producer = session.createProducer(queue);
// 创建消息
for (int i = 0; i < 100000; i++) {
// while(true){
String message = "{\"id\":"+System.currentTimeMillis()+", \"name\":\""+i+"\"}"; //System.currentTimeMillis() + "这是一条消息" + new Date();
TextMessage textMessage = session.createTextMessage(message);
System.out.println(message);
// 发送消息给 mq
producer.send(textMessage);
try {
Thread.sleep(500l);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
消费者
package com.activemq.demo;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
public class ActiveMQConsumer {
public static void main(String[] args) throws Exception {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 获取 connection
final Connection connection = connectionFactory.createConnection("user", "user");
// 启动
connection.start();
// 创建会话 session,参数第一个是事务,第二个是签收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目的地,queue 或者 topic
Queue queue = session.createQueue("testq1804"); // test_topic_m1
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
System.out.println("接收到消息:" + ((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}
}