深入浅出JMS(二)--ActiveMQ简单介绍以及安装

2023-11-10

现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的。

上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JMS,我们这篇博文介绍一款开源的JMS具体实现——ActiveMQ。ActiveMQ是一个易于使用的消息中间件。

消息中间件

我们简单的介绍一下消息中间件,对它有一个基本认识就好,消息中间件(MOM:Message Orient middleware)。

消息中间件有很多的用途和优点: 
1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外一个模块; 
2. 负责建立网络通信的通道,进行数据的可靠传送。 
3. 保证数据不重发,不丢失 
4. 能够实现跨平台操作,能够为不同操作系统上的软件集成技工数据传送服务

MQ

首先简单的介绍一下MQ,MQ英文名MessageQueue,中文名也就是大家用的消息队列,干嘛用的呢,说白了就是一个消息的接受和转发的容器,可用于消息推送。

下面进入我们今天的主题,为大家介绍ActiveMQ:

ActiveMQ

简要概述ActiveMQ
Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integration Patterns server.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. 

ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多种语言的客户端和协议,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。

下面我们下载一个版本,玩一玩。

下载ActiveMQ

官方网站:http://activemq.apache.org/ 
现在ActiveMQ最新的版本是5.11.1,下载挺简单的,就不再截图了。

运行ActiveMQ服务
  1. 下载,解压缩 
    大家现在好之后,将apache-activemq-5.11.1-bin.zip解压缩,我们可以看到它的整体目录结构: 
    这里写图片描述 
    从它的目录来说,还是很简单的: 
    • bin存放的是脚本文件
    • conf存放的是基本配置文件
    • data存放的是日志文件
    • docs存放的是说明文档
    • examples存放的是简单的实例
    • lib存放的是activemq所需jar包
    • webapps用于存放项目的目录
  2. 启动ActiveMQ 
    我们了解activemq的基本目录,下面我们运行一下activemq服务,双击bin目录下的activemq.bat脚本文件或运行自己电脑版本下的activemq.bat,就可以看下图的效果。 
    这里写图片描述

从上图我们可以看到activemq的存放地址,以及浏览器要访问的地址. 
3. 测试

ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动 netstat -an|find “61616”

C:\Documents and Settings\Administrator>netstat -an|find "61616" 
TCP     0.0.0.0:61616     0.0.0.0:0       LISTENING

4. 监控 
ActiveMQ默认启动时,启动了内置的jetty服务器,提供一个用于监控ActiveMQ的admin应用。 
admin:http://127.0.0.1:8161/admin/

用户名和密码都是admin

这里写图片描述
5. 至此,服务端启动完毕

停止服务器,只需要按着Ctrl+Shift+C,之后输入y即可。

我们简单说说ActiveMQ特性,网上很多,只是为了保证博文的完整。

ActiveMQ特性列表
  1. 多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
  2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
  3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
  4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
  5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
  6. 支持通过JDBC和journal提供高速的消息持久化
  7. 从设计上保证了高性能的集群,客户端-服务器,点对点
  8. 支持Ajax
  9. 支持与Axis的整合
  10. 可以很容易得调用内嵌JMS provider,进行测试
什么情况下使用ActiveMQ?
  1. 多个项目之间集成 
    (1) 跨平台 
    (2) 多语言 
    (3) 多项目
  2. 降低系统间模块的耦合度,解耦 
    (1) 软件扩展性
  3. 系统前后端隔离 
    (1) 前后端隔离,屏蔽高安全区

其实ActiveMQ的应用还有很多,大家可以上网查查,不再一一举例。

总结

ActiveMQ并不难,具有很多的优势。

下篇博文,我们做一个简单实例,真正的体会一把ActiveMQ的魅力。

转载自:http://blog.csdn.net/jiuqiyuliang/article/details/47160259

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入浅出JMS(二)--ActiveMQ简单介绍以及安装 的相关文章

  • 具有更高可见性的重写方法是良好的实践吗?

    回答这个问题 如何使用 GUI 使用 PaintComponent 初始化 GUI 然后添加基于鼠标的 GUI https stackoverflow com questions 21336141 how to gui using pain
  • Java Try Catch Final 没有 Catch 的情况下会阻塞

    我正在审查一些新代码 该程序只有一个 try 和一个 finally 块 既然排除了 catch 块 那么如果 try 块遇到异常或任何可抛出的内容 它如何工作 它直接进入finally块吗 如果 try 块中的任何代码可以引发已检查异常
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • 在文本文件中搜索单词并返回其频率

    如何在包含单词文本的文本文件中搜索特定单词并返回其频率或出现次数 使用扫描仪 String text Question how to search for a particular word in a text file containin
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • 如何让spring为JdbcMetadataStore创建相应的schema?

    我想使用此处描述的 jdbc 元数据存储 https docs spring io spring integration docs 5 2 0 BUILD SNAPSHOT reference html jdbc html jdbc met
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 无法加载或查找主类,可以在命令行中使用,但不能在 IDE 中使用[重复]

    这个问题在这里已经有答案了 在将其标记为重复之前 请先听我说完 我正在尝试使用 gradle 导入一个 java 项目 功能齐全 适用于所有其他笔记本电脑 没有问题 我的项目 100 正常运行 适用于所有其他笔记本电脑 当我的笔记本电脑被重
  • 在 Spring Boot Actuator 健康检查 API 中启用日志记录

    我正在使用 Spring boot Actuator APIproject https imobilenumbertracker com 拥有一个健康检查端点 并通过以下方式启用它 management endpoints web base
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 如何通过 Inno Setup for NetBeans 使用自定义 .iss 文件

    我将 Inno Setup 5 与 NetBeans 8 一起使用 并且我已经能够创建一个安装程序来安装该应用程序C users username local appname 但是我希望将其安装在C Programfiles 我如何在 Ne
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • JVM:是否可以操作帧堆栈?

    假设我需要执行N同一线程中的任务 这些任务有时可能需要来自外部存储的一些值 我事先不知道哪个任务可能需要这样的值以及何时 获取速度要快得多M价值观是一次性的而不是相同的M值在M查询外部存储 注意我不能指望任务本身进行合作 它们只不过是 ja
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • 嵌入式 Jetty - 以编程方式添加基于表单的身份验证

    有没有一种方法可以按如下方式以编程方式添加基于表单的身份验证 我用的是我自己的LdapLoginModule 最初我使用基本身份验证并且工作正常 但现在我想在登录页面上进行更多控制 例如显示徽标等 有没有好的样品 我正在使用嵌入式 jett

随机推荐

  • 主析取范式与主合取范式原理探究

    主析取范式 对任意一个命题公式来说 主析取范式与主合取范式都是唯一的 命题变元指原子化的 P Q命题 极小项的定义 包含全部N个命题变元的合取式 称其为极小项 且N个命题变元中 每个变元与它的否定不能同时存在 但两者中必有一个出现且仅出现一
  • 怎样加入马云,马化腾,李彦宏的微信

    让马化腾出如今你的微信聊天里面 首先声明不是 PS 我不会 PS 的 这是程序截图 例如以下图 程序源码 http git oschina net LittleDY isWeiXin 我在他的基础上 又一次设计了图片和聊天记录 图片来自百度
  • C++ 内存模型

    C 内存模型 未完 数据存储 程序数据段 程序代码段 stack栈内存 栈内存属于执行期函数 编译时确定大小 函数执行时栈空间自动分配 结束时栈空间自动销毁 栈对象是线性分配 连续排列 没有内存碎片化效应 栈内存具有函数本地性 不存再多线程
  • mysql 数据库合并命令_mysql多源复制及合并数据库

    背景 机器1 10 1 6 99 机器2 10 1 6 100 机器3 10 1 6 101 1 分别在三台主机上安装mysql数据库 1 配置yum源 root master lucky front cat etc yum repos d
  • Python 发邮件

    来源 微信公众号Crossin的编程教室 0 前言 发送电子邮件是个很常见的开发需求 比如你写了个监控天气的脚本 发现第二天要下雨 或者网站上关注的某个商品降价了 就可以发个邮件到邮箱来提醒自己 使用 Python 脚本发送邮件并不复杂 不
  • maven学习笔记

    1 什么是Maven maven是跨平台的项目管理工具 主要服务于基于java平台 包括j2ee和j2se 的项目构建 依赖管理和项目信息管理 可以帮助开发者管理jar包 一步构建项目 从清理 编译 测试 报告直接到打包 部署 2 Mave
  • 关于洗牌算法的一点总结

    之前写斗地主的时候简单写了一个洗牌函数 基本思路是先产生一个顺序数组 遍历数组 每次产生一个 1 n 随机数 把这个随机数作为下标取出数组里的数与当前位置的数交换 当时也没多想 反正能打乱数组顺序就行 后来跟师兄吃饭的时候聊起来 说到面试里
  • 解决MATLAB Simulink 无法打开高版本模型的问题

    参考及致谢MATLAB版本 R2019a 不同版本的设置方式可能不同 报错内容 解决方案 Step1 Step2 Step3 按照上述流程操作后 就可以在低版本simulink中浏览使用高版本创建的模型文件 slx文件 了
  • 上门维修保养小程序系统开发

    用户通过小程序添加绑定需要售后维保的机器设备 然后用户通过小程序线上提交报修需求清单 后台分配安排人员上门维修 标记确认订单完成 同时提供在线服务商城 积分 优惠劵抵扣会员卡管理会员等级服务 核心功能 维修服务 保养服务 使用攻略 服务商城
  • c++数据读取、保存之dcm格式(需要有dcmtk)

    include
  • 【Shader笔记】Unity Shader基础

    参考书籍 UNITY SHADER入门精要 一 材质 Material 与 Unity Shader 效果的实现需要材质和Unity Shader配合使用 常见流程为 1 创建一个材质 2 创建一个Unity Shader 并赋予给上一步新
  • python粒子群算法工具包_python进阶教程:实现粒子群算法(PSO)详解

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python编程实现粒子群算法 PSO 详解 涉及粒子群算法的原理 过程 以及实现代码示例 具有一定参考价值 需要的朋友可以了解下 文章目录 1 原理 2
  • Transformer学习笔记

    Transformer是第一个完全依赖于自我注意力机制来计算输入和输出表征的转导模型 而不使用序列对齐的RNNs或卷积 Figure 1 左 Transformer整体结构 右 编解码器内部结构图 Encoder Decoder 编码器 由
  • 虚拟机没有显示ip地址

    之所以写这篇博客是因为有个同学刚搭建完虚拟机但没有IP地址 为了帮助那个同学和回顾知识 所以有了这篇博客 而且网上大部分博客都没提到networkmanager的问题 所以这边就记录一下 一 检查网络连接模式是否为NAT模式 在VMware
  • Redis学习:Redis实现乐观锁

    实际这部分是接着事务那一块 加了一个watch命令 这里要有一个乐观锁和悲观锁的概念 悲观锁 很悲观 认为什么时候都会出现问题 无论做什么都会加锁 乐观锁 很乐观 认为什么时候都不会出现问题 所以不会上锁 更新数据的时候去判断一下 在此期间
  • Python提取PDF中的图片

    插播一条老家自产的糖心苹果 多个品种 欢迎选购 有问题随时私信我 来自雪域高原的馈赠 海拔2000米的大凉山高原生态糖心苹果 https blog csdn net qq 15969343 article details 126107252
  • VUE H5 页面借助 dsbridge 嵌入到 app 中(前端)

    H5 页面嵌入 app 中 不得不面对 web 和 native 之间进行交互的问题 比如 传递参数 调用函数等 至于交互的桥梁目前 github 上有一些开源的 其中使用最广的是 jsBridge 然而 最近刚开源了一个新项目 dsbri
  • Canal实现Mysql数据同步至Redis、Elasticsearch

    文章目录 1 Canal简介 1 1 MySQL主备复制原理 1 2 canal工作原理 2 开启MySQL Binlog 3 安装Canal 3 1 下载Canal 3 2 修改配置文件 3 3 启动和关闭 4 SpringCloud集成
  • 【Lua】Table根据value排序

    使用lua开发需要把有用的数据全部存进Table里 lua也提供了一个sort接口来给table排序 但是sort的实现也是基于冒泡排序 他默认table的key是从1开始的 这样就会造成当我们的key是一些特殊的标志位 比如游戏中背包数据
  • 深入浅出JMS(二)--ActiveMQ简单介绍以及安装

    现实的企业中 对于消息通信的应用一直都非常的火热 而且在J2EE的企业应用中扮演着特殊的角色 所以对于它研究是非常有必要的 上篇博文深入浅出JMS 一 JMS基本概念 我们介绍了消息通信的规范JMS 我们这篇博文介绍一款开源的JMS具体实现