0
点赞
收藏
分享

微信扫一扫

docker安装activeMq,以及java、python连接 activeMq

pipu 2022-10-08 阅读 140


docker安装activeMq

这里使用Docker安装

  1. 查询Docker镜像:

docker search activemq

  1. 下载Docker镜像:

docker pull webcenter/activemq

  1. 创建&运行ActiveMQ容器:

docker run -d --name myactivemq -p 61616:61616 -p 8161:8161 -p 61613:61613webcenter/activemq

61616是 activemq 的容器使用端口(映射为61616),8161是 web 页面管理端口(对外映射为8161)
61613是 activemq 的容器使用stomp端口(映射为61613)

mq账号密码的修改

1.首先找到容器

docker ps 

2.进入docker容器内

docker exec -it  容器id  bash

3.搜索文件,并找到

find / -name 'jetty-realm.properties'

4.修改

 vi jetty-realm.properties

网页访问

  http://192.168.2.1:8161/admin/sendMessage.action
admin admin

其他服务连接配置用户名密码

配置连接密码
编辑activemq.xml文件,放置到 shutdownHooks 下方即可。

<!-- 添加访问ActiveMQ的账号密码 -->
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>
</users>
</simpleAuthenticationPlugin>
</plugins>

修改conf中credentials.properties文件进行密码设置:

activemq.username=admin
activemq.password=123456
guest.password=123456

python 连接示例

# coding:utf-8
import time

import stomp
import json

listener_name = 'SampleListener'

class SampleListener(object):
def on_error(self, headers, message):
print('received an error "%s"' % message)

def on_message(self, headers, message):
print('message: %s' % message)

#推送到主题
def send_to_topic(host,port,username,password,topic,msg):
conn = stomp.Connection([(host, int(port))], auto_content_length=False)
conn.set_listener(listener_name, SampleListener())
conn.start()
conn.connect(username=username, passcode=password)
#msg = json.dumps(msg, ensure_ascii=False)
conn.send(topic, body=msg)
print("send success,msg={}".format(msg))
conn.disconnect()


##从主题接收消息
def receive_from_topic(host,port,username,password,topic):
conn = stomp.Connection([(host, int(port))], auto_content_length=False)
conn.set_listener(listener_name, SampleListener())
conn.start()
conn.connect(username=username, passcode=password)
conn.subscribe(topic, id="seemmo", ack="auto")


i = 1
while 1:
print(i)
elements = list()
elements.append("1.0")
elements.append(str(i))
elements.append("0")
structure_data = ",".join(elements)
send_to_topic(host,port,username,password,topic,structure_data)
time.sleep(1) # secs
i = i+1

time.sleep(3) # secs
conn.disconnect()


if __name__ == "__main__":
host = "192.168.2.1"
port = "61613"
username='admin'
password='123456'
topic="/topic/AI"

elements = list()
elements.append("1.0")
elements.append("start")
elements.append("1")
structure_data = ",".join(elements)
#send_to_topic(host,port,username,password,topic,structure_data)
receive_from_topic(host,port,username,password,topic)

java 连接示例

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;



public class AppProducer {
public static final String url = "tcp://192.168.2.1:61616";
public static final String topicName = "AI";

public static void main(String[] args) throws JMSException{
//1. 创建ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url);

//2. 创建Connection
Connection connection = connectionFactory.createConnection();

//3. 启动链接
connection.start();

//4. 创建会话
Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE);

//5. 创建一个目标
Destination destination = session.createTopic( topicName);

//6. 创建一个生产者
MessageProducer producer = session.createProducer( destination);

for( int i=0; i<100; i++){
//7. 创建消息
TextMessage textMessage = session.createTextMessage( "test" + i);
//8. 发布消息
producer.send( textMessage);

System.out.println( "发送消息" + textMessage.getText());
}

//9. 关闭链接
connection.close();
}

}

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class AMQConsumer {
public static final String url = "tcp://192.168.2.92:61616";
public static final String topicName = "HIATMP.HISENSE.ILLEGAL.AI";

public static void main(String[] args) throws JMSException{
//1. 创建ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( url);

//2. 创建Connection
Connection connection = connectionFactory.createConnection();

//3. 启动链接
connection.start();

//4. 创建会话
Session session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE);

//5. 创建一个目标
Destination destination = session.createTopic(topicName);

//6. 创建一个消费者
MessageConsumer consumer = session.createConsumer( destination);

//7. 创建一个监听器
consumer.setMessageListener( new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = ( TextMessage) message;
try{
System.out.println( "0接收消息" + textMessage.getText());
}catch( JMSException e){
e.printStackTrace();
}

}
});

//8. 关闭链接
//connection.close();
}
}

  <dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>
</dependency>


举报

相关推荐

0 条评论