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
:出了队列的消息 可以理解为是消费这消费掉的数量
- 通用日志
- 数据包络分析教程
- 用JAVA的DEA算法衡量社交媒体页面的流行度
- 如何构建智能反垃圾邮件的WordPress插件
- 【深入研究】使用RNN预测股票价格系列一
- 【深入研究】使用RNN预测股票价格系列二
- 教你用一行Python代码实现并行(附代码)
- 在美国国会图书馆标题表的SKOS上运行Apache Spark GraphX算法
- 【精选】破解波动性突破实盘系统
- 从程序员的角度看神经网络的激活功能
- 在线矩阵微积分工具,可以生成 Python/Latex 代码哦!
- 机器学习应用区块链系列(一)——如何开发一套自己的智能合约系统
- 使用Botkit和Rasa NLU构建智能聊天机器人
- 【量化投资】缠论面面观(附Python源码)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenAI Gym 入门
- 常见编程模式之合并区间
- chmod 777 是开发的常规操作吗?
- 手把手教你进行Anaconda的安装
- 浅析Python基础知识之面向对象
- 手把手教你用Python进行SSH暴力破解
- 一文学会注解的正确使用姿势
- 面试官:请算出走迷宫需要的最少步数
- lua执行redis脚本找不到脚本的问题
- Android |《看完不忘系列》之dagger
- Android | dagger细枝篇
- ES UpdateByQuery Java Api
- [Bazel]repository_rule() vs rule()
- Windows 系统信息收集姿势
- 小白学PyTorch | 3 浅谈Dataset和Dataloader