一,ActiveMQ简介

ActiveMQ是一种开源的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。

二,ActiveMQ安装和基本使用

下载安装包链接:http://pan.baidu.com/s/1c2KpE96 密码:cu7x,linux下完成解压、启动bin/activemq start(前提配置好JDK环境变量)

activemq上传 activemq入门_集群

启动ActiveMQ以后,登陆:http://192.168.247.128:8161/admin/ IP为自己linux虚拟机IP,用户名密码都是admin

activemq上传 activemq入门_activemq_02

出现这个界面说明启动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发送消息成功

 

activemq上传 activemq入门_activemq_03

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取数据成功

activemq上传 activemq入门_activemq上传_04


三,理解和掌握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性能的因素,常见的优化方式和配置等