MQ 系列之 ActiveMQ 介绍

时间:2022-07-26
本文章向大家介绍MQ 系列之 ActiveMQ 介绍,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 简介

1.1.1 ActiveMQ 概述

  Apache ActiveMQ 是 Apache 软件基金会所研发的开放源代码消息中间件;由于 ActiveMQ 是一个纯 Java 程序,因此只需要操作系统支持 Java 虚拟机,ActiveMQ 便可执行。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。

1.1.2 JMS 概述

  JMS(Java Messaging Service) 是 Java 平台上有关面向消息中间件的技术规范,它便于消息系统中的 Java 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。JMS 本身只定义了一系列的接口规范,是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC(java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA 的 Weblogic JMS service 和 Progress 的 SonicMQ。   JMS 能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS 客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。JMS 定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。  ♞ TextMessage:个字符串对象  ♞ MapMessage:套名称 - 值对  ♞ ObjectMessage:个序列化的 Java 对象  ♞ BytesMessage:个字节的数据流  ♞ StreamMessage:Java 原始值的数据流

1.1.3 JMS 消息传递类型

  JMS 有两种消息通信模型,点对点模型(point to point)(p2p)和发布/订阅模型(pub/sub),ActiveMq 实现了 JMS 接口,同样,ActiveMq 也实现了这两种模型。 点对点模型规定了一个消息只能被一个接收者接收,而发布/订阅模型允许一个消息可以被多个消息接收者接收。

☞ 点对点

  当一个消息生产者产生一个消息时,会把消息放入一个队列(Queue)中,然后消息消费者从 Queue 中读取消息,如果同时有多个消费者读取消息,ActiveMq 保证消息只会被一个消费者读取到,消费者读取到消息之后需要向 ActiveMq 发送一条确认信息,确认消息已经被接收,此时,队列(Queue)中的消息出队,整个流程就处理完了。

☞ 发布/订阅

  发布/订阅模式允许一条消息可以被多个订阅了该 Topic 的消息消费者接收,当一个消息生产者产生一个消息时,会把消息放入一个 Topic 中,然后监听在此 Topic 上的消息消费者都能接收到消息。

1.2 安装 ActiveMQ

1.2.1 Windows 平台

☞ 下载

 首先去 ☛ ActiveMQ 官网 下载 Windows 版本的压缩包

☞ 安装

 将下载好的压缩包放到合适的路径下,解压。你就得到了一个安装好的 ActiveMQ。

☞ 启动

 进入 bin 目录,打开 cmd 执行 ./activemq start 命令,

1.2.2 Linux 平台

☞ 下载

 首先去 ☛ ActiveMQ 官网 下载 Unix/Linux/Cygwin 版本的压缩包,将其上传至服务器。

☞ 解压、赋权

 使用 tar zxvf apache-activemq.tar.gz 将 ActiveMQ 解压,然后使用 chmod 777 apache-activemq 给解压好的文件赋权。

☞ 启动

 进入 apache-activemqbin 目录,执行 ./activemq start 启动 MQ,注意要先安装好 JDK 才能正常启动。

1.2.3 ActiveMQ 管理界面

  在浏览器输入服务器 IP + 8161 端口进入 ActiveMQ 登录界面,输入默认账号:admin,默认密码:admin 点击 Manage ActiveMQ broker 进入主管理界面。

  点击对应的选项卡进入点对点消息列表(Queues)和发布/订阅消息列表(Topics),列表各列信息含义如下:   ♞ Name:名称   ♞ Number Of Pending Messages:等待消费的消息 这个是当前未出队列的数量。   ♞ Number Of Consumers:消费者 这个是消费者端的消费者数量   ♞ Messages Enqueued:进入队列的消息 进入队列的总数量,包括出队列的。   ♞ Messages Dequeued:出了队列的消息 可以理解为是消费这消费掉的数量