Docker安装ActiveMQ镜像以及通过Java生产消费activemq示例

拉取镜像

docker pull docker.io/webcenter/activemq

启动容器

docker run -d --name myactivemq -p 61616:61616 -p 8162:8161 docker.io/webcenter/activemq:latest

这样就代表启动成功了

浏览器访问

http://localhost:8162/

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();

}

}

});

}

}

相关推荐
宋均浩21 小时前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵2 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1112 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽3 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康5 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn868 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵8 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏8 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主8 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang8 天前
Docker 使用完整指南
运维·docker·容器