网站产品展示模板,聊城公司网站建设,站长工具关键词查询,建设网站多少钱 郑州ActiveMQ 下载、安装、运行、实战需求 文章目录一、ActiveMQ简介1. 什么是ActiveMQ#xff1f;2. ActiveMQ能干什么#xff1f;3. ActiveMQ特点4. MOM基本功能5. MOM主要特点6. MOM的应用场景_前7. MOM的应用场景_后二、ActiveMQ下载/安装2.1 ActiveMQ下载2.2 ActiveMQ安装环… ActiveMQ 下载、安装、运行、实战需求 文章目录一、ActiveMQ简介1. 什么是ActiveMQ2. ActiveMQ能干什么3. ActiveMQ特点4. MOM基本功能5. MOM主要特点6. MOM的应用场景_前7. MOM的应用场景_后二、ActiveMQ下载/安装2.1 ActiveMQ下载2.2 ActiveMQ安装环境(jdk)2.3 ActiveMQ 解压缩/运行2.4 ActiveMQ目录介绍2.5 ActiveMQ后台页面三、ActiveMQ消息形式3.1. 点对点Point-to-Point3.2. 广播TOPICpublish-subscribe四、ActiveMQ消息类型五、基础创建流程代码构建5.1. MQ基础流程总览5.2. MQ_点对点_代码案例5.2.1. MQ_点对点_生产者_图示5.2.2. MQ_点对点_生产者_代码5.2.3. MQ_点对点_消费者_图示5.2.4. MQ_点对点_消费者_代码5.3. MQ_TOPIC_代码案例5.3.1. MQ_广播_生产者_图示5.3.2. MQ_广播_生产者_代码5.3.3. MQ_广播_生产者_图示5.3.4. MQ_广播_生产者_代码六、实战ActiveMQ6.1. 解压ActiveMQ/附目录权限/启动6.2. 关闭防火墙或者开放8161端口任选1种6.2.1. 关闭防火墙6.2.2. 开放8161端口6.3. 登录后台七、点对点_实战发送/接收消息_场景017.1. 创建一个maven项目7.2. 引入依赖7.3. 创建一个点对点的生产者7.4. 创建一个点对点的消费者7.5. 启动生产者7.5.1. 运行main方法即可7.5.2. Connection timed out: connect7.5.3. 解决方案7.5.4. 再次启动项目7.5.5. 查看MQ控制台7.5.6. MQ名称讲解7.6. 启动消费者八、点对点_实战发送/接收消息_场景28.1. 启动一个生产者投递一次消息8.2. 启动消费者1号8.3. 启动消费者2号8.3. 现象分析/总结8.4. 总结8.5. 效果图九、广播_实战发送/接收消息_场景029.1. 创建一个topic的生产者9.2. 创建一个topic的消费者9.3. 启动一个生产者9.4. 登录后台查看9.5. 数据展示9.6. 启动消费者1号和消费者2号9.7. 结果分析9.8. topic 广播形式如果先启动生产者在启动消费者消息失效会丢失9.9. 再次测试十、总结归纳一、ActiveMQ简介
1. 什么是ActiveMQ 2. ActiveMQ能干什么 3. ActiveMQ特点 4. MOM基本功能 5. MOM主要特点 6. MOM的应用场景_前 7. MOM的应用场景_后 二、ActiveMQ下载/安装
2.1 ActiveMQ下载
官网链接http://activemq.apache.org/download.html 2.2 ActiveMQ安装环境(jdk) 2.3 ActiveMQ 解压缩/运行 2.4 ActiveMQ目录介绍 2.5 ActiveMQ后台页面 三、ActiveMQ消息形式 3.1. 点对点Point-to-Point 3.2. 广播TOPICpublish-subscribe 四、ActiveMQ消息类型 五、基础创建流程代码构建
5.1. MQ基础流程总览 5.2. MQ_点对点_代码案例
5.2.1. MQ_点对点_生产者_图示 5.2.2. MQ_点对点_生产者_代码
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class QueueProducer {public static void main(String[] args) throws JMSException {//1.创建连接工厂ConnectionFactory connectionFactorynew ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建队列对象Queue queue session.createQueue(test-queue);//6.创建消息生产者对象MessageProducer producer session.createProducer(queue);//7.创建消息对象文本消息TextMessage textMessage session.createTextMessage(欢迎来到神奇的gblfy世界);//8.发送消息producer.send(textMessage);//9.关闭资源producer.close();session.close();connection.close();}
}5.2.3. MQ_点对点_消费者_图示 5.2.4. MQ_点对点_消费者_代码
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;
import java.io.IOException;public class QueueConsumer {public static void main(String[] args) throws JMSException, IOException {//1.创建连接工厂ConnectionFactory connectionFactorynew ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建队列对象Queue queue session.createQueue(test-queue);//6.创建消息消费者对象MessageConsumer consumer session.createConsumer(queue);//7.设置监听consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage(TextMessage)message;try {System.out.println(提取的消息 textMessage.getText() );} catch (JMSException e) { e.printStackTrace();}}});//8.等待键盘输入System.in.read();//9.关闭资源consumer.close();session.close();connection.close();}}5.3. MQ_TOPIC_代码案例
5.3.1. MQ_广播_生产者_图示 5.3.2. MQ_广播_生产者_代码
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;
/*** 发布订阅模式消息生产者* author gblfy**/
public class TopicProducer {public static void main(String[] args) throws JMSException {//1.创建连接工厂ConnectionFactory connectionFactorynew ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建主题对象Topic topic session.createTopic(test-topic); //6.创建消息生产者对象MessageProducer producer session.createProducer(topic);//7.创建消息对象文本消息TextMessage textMessage session.createTextMessage(欢迎来到申请的品优购世界);//8.发送消息producer.send(textMessage);//9.关闭资源producer.close();session.close();connection.close();}}
5.3.3. MQ_广播_生产者_图示 5.3.4. MQ_广播_生产者_代码
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;
import java.io.IOException;public class TopicConsumer {public static void main(String[] args) throws JMSException, IOException {//1.创建连接工厂ConnectionFactory connectionFactory new ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建主题对象Topic topic session.createTopic(test-topic);//6.创建消息消费者对象MessageConsumer consumer session.createConsumer(topic);//7.设置监听consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage (TextMessage) message;try {System.out.println(提取的消息 textMessage.getText());} catch (JMSException e) {e.printStackTrace();}}});//8.等待键盘输入System.in.read();//9.关闭资源consumer.close();session.close();connection.close();}
}六、实战ActiveMQ
6.1. 解压ActiveMQ/附目录权限/启动
1将apache-activemq-5.12.0-bin.tar.gz 上传至服务器2解压此文件
tar zxvf apache-activemq-5.12.0-bin.tar.gz3为apache-activemq-5.12.0目录赋权
chmod 777 apache-activemq-5.12.04进入apache-activemq-5.12.0\bin目录5赋与执行权限
chmod 755 activemq 6启动mq ./activemq start6.2. 关闭防火墙或者开放8161端口任选1种
6.2.1. 关闭防火墙 /etc/init.d/iptables stop6.2.2. 开放8161端口
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8161 -j ACCEPT
:wq
service iptables restart
service iptables status6.3. 登录后台 七、点对点_实战发送/接收消息_场景01
7.1. 创建一个maven项目 7.2. 引入依赖
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.gblfy.jms/groupIdartifactIdjmsDemo/artifactIdversion0.0.1-SNAPSHOT/versiondependenciesdependencygroupIdorg.apache.activemq/groupIdartifactIdactivemq-client/artifactIdversion5.13.4/version/dependency/dependencies/project7.3. 创建一个点对点的生产者 //1.创建连接工厂ConnectionFactory connectionFactorynew ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建队列对象Queue queue session.createQueue(test-queue);//6.创建消息生产者对象MessageProducer producer session.createProducer(queue);//7.创建消息对象文本消息TextMessage textMessage session.createTextMessage(欢迎来到神奇的gblfy世界);//8.发送消息producer.send(textMessage);//9.关闭资源producer.close();session.close();connection.close();}7.4. 创建一个点对点的消费者
//1.创建连接工厂ConnectionFactory connectionFactorynew ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建队列对象Queue queue session.createQueue(test-queue);//6.创建消息消费者对象MessageConsumer consumer session.createConsumer(queue);//7.设置监听consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage(TextMessage)message;try {System.out.println(提取的消息 textMessage.getText() );} catch (JMSException e) { e.printStackTrace();}}});//8.等待键盘输入System.in.read();//9.关闭资源consumer.close();session.close();connection.close();}7.5. 启动生产者
7.5.1. 运行main方法即可 7.5.2. Connection timed out: connect
7.5.3. 解决方案
关闭防火墙或者开放61616端口 过程上面一样如果开发防火墙记得要重启防火墙
-A INPUT -m state --state NEW -m tcp -p tcp --dport 61616 -j ACCEPT7.5.4. 再次启动项目 7.5.5. 查看MQ控制台
点击Queues 发现消息已经成功发送成功
7.5.6. MQ名称讲解
① 队列名② 未消费消息数量③ 活跃的消费者数量④ 一共投递消息总量⑤消费消息数量⑥ atom可以查看具体消息⑦ 删除消息按钮
7.6. 启动消费者 消费者已经成功接收到投递的消息 查看后台MQ后台
名称数量未消费的消息0活跃消费者1消息投递总量1已经消费消息1八、点对点_实战发送/接收消息_场景2
8.1. 启动一个生产者投递一次消息
启动一个生产者投递一次消息启动2个消费者8.2. 启动消费者1号 8.3. 启动消费者2号 8.3. 现象分析/总结
只有消费者2号接收到生产者投递的消息
8.4. 总结
不管有多少消费者消息只能被一个接收消费了也就没了先来先得
8.5. 效果图
名称数量队列1未消费消息0活跃消费者2投递消息总量2消费消息数量2
注此次测试建立在刚才第一次测试基础上 正常如下
名称数量队列1未消费消息0活跃消费者2投递消息总量1消费消息数量1九、广播_实战发送/接收消息_场景02
9.1. 创建一个topic的生产者
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;
/*** 发布订阅模式消息生产者* author gblfy**/
public class TopicProducer {public static void main(String[] args) throws JMSException {//1.创建连接工厂ConnectionFactory connectionFactorynew ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建主题对象Topic topic session.createTopic(test-topic); //6.创建消息生产者对象MessageProducer producer session.createProducer(topic);//7.创建消息对象文本消息TextMessage textMessage session.createTextMessage(欢迎来到申请的品优购世界);//8.发送消息producer.send(textMessage);//9.关闭资源producer.close();session.close();connection.close();}}
9.2. 创建一个topic的消费者
package com.gblfy.jms;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;
import java.io.IOException;public class TopicConsumer {public static void main(String[] args) throws JMSException, IOException {//1.创建连接工厂ConnectionFactory connectionFactory new ActiveMQConnectionFactory(tcp://192.168.25.135:61616);//2.创建连接Connection connection connectionFactory.createConnection();//3.启动连接connection.start();//4.获取session(会话对象) 参数1是否启动事务 参数2消息确认方式Session session connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//5.创建主题对象Topic topic session.createTopic(test-topic);//6.创建消息消费者对象MessageConsumer consumer session.createConsumer(topic);//7.设置监听consumer.setMessageListener(new MessageListener() {public void onMessage(Message message) {TextMessage textMessage (TextMessage) message;try {System.out.println(提取的消息 textMessage.getText());} catch (JMSException e) {e.printStackTrace();}}});//8.等待键盘输入System.in.read();//9.关闭资源consumer.close();session.close();connection.close();}
}9.3. 启动一个生产者 9.4. 登录后台查看 9.5. 数据展示
名称数量活跃消费者数量0消息投递总量1已消费消息0
9.6. 启动消费者1号和消费者2号 9.7. 结果分析
发现消费者1号和消费者2号都没有接收到消息
9.8. topic 广播形式如果先启动生产者在启动消费者消息失效会丢失
因此需要先启动消费者在启动生产者再启动生产者。
9.9. 再次测试 从截图中可以看出生产者投递一次消息2个消费者都可以接收到消息
十、总结归纳
MQ的需要根据应用的业务场景选择不同的消息投递方式一次的选择点对点消息同一个有多个消费者的选择广播形式。