码迷,mamicode.com
首页 > 其他好文 > 详细

ActiveMQ简单介绍以及安装

时间:2016-07-06 00:26:37      阅读:561      评论:0      收藏:0      [点我收藏+]

标签:

概述

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

ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程 序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂商无关的API,使得Java程序能够与不同厂商的消息组件很好地进行通 信。

JMS支持两种消息发送和接收模型。一种称为P2P(Ponit to Point)模型,即采用点对点的方式发送消息。P2P模型是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的 异步传输称为可能,P2P模型在点对点的情况下进行消息传递时采用。

技术分享

另一种称为Pub/Sub(Publish/Subscribe,即发布-订阅)模型,发布-订阅模型定义了如何向一个内容节点发布和订阅消息,这 个内容节点称为topic(主题)。主题可以认为是消息传递的中介,消息发布这将消息发布到某个主题,而消息订阅者则从主题订阅消息。主题使得消息的订阅 者与消息的发布者互相保持独立,不需要进行接触即可保证消息的传递,发布-订阅模型在消息的一对多广播时采用。

技术分享


ActiveMQ的安装

ActiveMQ的安装比较简单,解压即可。我下载的版本是apache-activemq-5.13.3-bin.zip。这是windows下的版本,也有linux版本提供下载.

官方网站:http://activemq.apache.org/

解压后的目录结构为

技术分享

从它的目录来说,还是很简单的:

--bin存放的是脚本文件

--conf存放的是基本配置文件

--data存放的是日志文件

--docs存放的是说明文档

--examples存放的是简单的实例

--lib存放的是activemq所需jar包

--webapps用于存放项目的目录

启动ActiveMQ

  • 进入到C:\apache-activemq-5.13.3\bin\win32(我的电脑是32位的win7,所以进到win32这个目录)

  • 运行批处理命令activemq.bat(用命令行运行比较好,有异常会停留在黑窗,如果双击运行一旦有异常窗口会自动关闭)

我们发现报以下异常

Failed to start Apache ActiveMQ ([localhost, ID:winner_0715-PC-49825-1467734408129-0:1], java.net.URISyntaxExcept
ion: Illegal character in hostname at index 11: ws://winner_0715-PC:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600)

发现这边的winner_0715-PC正好是我的机器名异常描述大概意思是有不合法的字符,打开conf目录下的activemq.xml文件,发现有以下配置:

<transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

把这些配置中的ip改为127.0.0.1,如下:

        <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://127.0.0.1:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://127.0.0.1:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://127.0.0.1:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://127.0.0.1:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://127.0.0.1:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

再启动就成功了,怀疑是因为C:\Windows\System32\drivers\etc\hosts文件中未配置0.0.0.0对应的域名导致程序会使用默认的主机名,而域名是不能下划线导致的。

技术分享

3. 测试

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

技术分享

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,进行测试
  11. 什么情况下使用ActiveMQ?
    1. 多个项目之间集成
      (1) 跨平台
      (2) 多语言
      (3) 多项目
    2. 降低系统间模块的耦合度,解耦
      (1) 软件扩展性
    3. 系统前后端隔离
      (1) 前后端隔离,屏蔽高安全区

 

ActiveMQ简单介绍以及安装

标签:

原文地址:http://www.cnblogs.com/winner-0715/p/5645447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!