一,ActiveMQ简介
ActiveMQ是一种开源的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。
二,ActiveMQ安装和基本使用
下载安装包链接:http://pan.baidu.com/s/1c2KpE96 密码:cu7x,linux下完成解压、启动bin/activemq start(前提配置好JDK环境变量)
启动ActiveMQ以后,登陆:http://192.168.247.128:8161/admin/ IP为自己linux虚拟机IP,用户名密码都是admin
出现这个界面说明启动ActiveMQ成功,这里我们就可以使用代码来发送和接收ActiveMQ中的消息了。下面我们编写一个生产者给ActiveMQ发送消息,消费者去ActiveMQ里取消息。需要引入activemq-all-5.15.0.jar包
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
public class MyProducer {
public static void main(String[] args) {
// 连接broker,IP为自己linux虚拟机IP,61616为默认端口
ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://192.168.247.128:61616");
// 创建了一个队列名称为 "test.queue"
Destination destination = new ActiveMQQueue("test.queue");
Connection conn = null;
try {
// 从连接工程里面获取一个新连接
conn = cf.createConnection();
// 自动确认消息的发送
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建一个消息生产者,并且配置发送消息的地址
MessageProducer producer = session.createProducer(destination);
// 创建一个map类型的消息
MapMessage message = session.createMapMessage();
message.setString("Id", "10086");
message.setString("Name", "移动");
message.setInt("age", 18);
// 发送
producer.send(message);
// 关闭
session.close();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
}
}
运行后,说明向ActiveMQ发送消息成功
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
public class MyConsumer {
public static void main(String[] args) {
// 连接broker,IP为自己linux虚拟机IP,61616为默认端口
ConnectionFactory cf= new ActiveMQConnectionFactory("tcp://192.168.247.128:61616");
//创建了一个队列名称为 "test.queue"
Destination destination=new ActiveMQQueue("test.queue");
Connection conn=null;
try {
//从连接工程里面获取一个新连接
conn=cf.createConnection();
//自动确认消息的接受
Session session=conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个消费者
MessageConsumer consumer=session.createConsumer(destination);
conn.start();
//同步阻塞等待接受消息
MapMessage message=(MapMessage)consumer.receive();
System.out.println(message.getString("Id")+" "+message.getString("Name") +" "+ message.getInt("age"));
session.close();
} catch (Exception e) {
throw new RuntimeException(e);
}finally{
if(conn!=null){
try {
conn.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
}
}
运行打印说明向ActiveMQ取数据成功
三,理解和掌握JMS
包括:基本概念,消息结构,可靠性机制,PTP,Pub/Sub,API结构,JMS应用开发的基本步骤,持久和非持久Topic等
四:用ActiveMQ构建应用
包括:多种启动Broker的方法,单独应用的开发,结合Spring的开发等
五:ActiveMQ的Transport
包括:多种传输协议的功能,配置和使用
六:ActiveMQ的消息存储
包括:队列和topic,kahaDB,AMQ,JDBC,MMS等
七:ActiveMQ和Network
包括:在一台服务器启动多个Broker,静态网络连接的功能,配置等,丢失消息的处理,容错或可负载均衡的连接,动态网络连接等
八:ActiveMQ的集群
包括:队列消费者集群,Broker的集群,Master Slave等
九:Destination高级特性
包括:通配符,组合队列,配置启动的Destination,删除不活动的Destination,Destination选项,虚拟Destination,镜像队列,每个Destination单独策略配置等
十:Message Dispatch高级特性
包括:消息游标,异步发送,严格分发策略,轮询分发策略,优化批量确认,生产者流量控制等
十一:Message高级特性
包括:消息熟悉,Advisory Message,延迟和定时消息投递,Blob消息,消息转换等
十二:Consumer高级特性
包括:独有消费者,消息异步分发,消息优先级,管理持久化消息,消息分组,消息选择器,消息重递策略,消费者追溯消息,慢消费者处理等
十三:杂项技术
包括:监控和管理Broker,集成ActiveMQ和Tomcat,什么时候使用ActiveMQ等
十四:ActiveMQ优化
包括:影响ActiveMQ性能的因素,常见的优化方式和配置等