简介
上一篇http://www.javaeye.com/topic/15317介绍了ActiveMQ5.0的安装,这一篇将介绍的配置。ActiveMQ包含了很多features(详见http://activemq.apache.org/features.html ),
不同的需求,不同的环境,需要不同的features,当然需要不同的配置。在这里我只写了最基本的配置,算是抛砖了,希望引出更多关于ActiveMQ的高级配置。
假设已经正确安装ActiveMQ5.0,同时及其IP地址为192.168.1.148,具体使用时可以改为自己的IP。下面讲解的配置实现的features如下:
- 客户端可以通过tcp://192.168.1.148连接ActiveMQ。
- 消息持久化保存,重启服务器不会丢失消息。
- 可以通过http://192.168.1.148:8161/admin监控ActiveMQ服务器
配置
ActiveMQ默认使用的是XML格式配置,从4.0版本开始用MBean的方式实现XML配置,配置文件在${activemq.home}/conf目录下,文件名为activemq.xml。最新的默认配置见
http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/conf/activemq.xml 。下面为本篇文章使用的配置,及重要部分的解释。
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:amq="http://activemq.org/config/1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://activemq.org/config/1.0 http://activemq.apache.org/schema/activemq-core.xsd
- http://activemq.apache.org/camel/schema/spring>
- <!-- persistent="true"表示要持久化存储消息,和子元素persistenceAdapter结合使用 -->
- <!-- dataDirectory默认的存储持久化数据的目录 -->
- <!-- brokerName 设置broker的name,在注意在网络上必须是唯一的-->
- <!-- 更多参考http://activemq.apache.org/xbean-xml-reference-50.html#XBeanXMLReference5.0-brokerelement -->
- <broker xmlns="http://activemq.org/config/1.0" brokerName="192.168.1.148" persistent ="true" dataDirectory="${activemq.base}/data" useShutdownHook="false">
- <!-- Destination specific policies using destination names or wildcards -->
- <!-- wildcards意义见http://activemq.apache.org/wildcards.html -->
- <destinationPolicy>
- <policyMap>
- <policyEntries>
- <!-- 这里使用了wildcards,表示所有以EUCITA开头的topic -->
- <policyEntry topic="EUCITA.>" producerFlowControl="false" memoryLimit="10mb">
- <!-- 分发策略 -->
- <dispatchPolicy>
- <!-- 按顺序分发 -->
- <strictOrderDispatchPolicy/>
- </dispatchPolicy>
- <!-- 恢复策略-->
- <subscriptionRecoveryPolicy>
- <!-- 只恢复最后一个message -->
- <lastImageSubscriptionRecoveryPolicy/>
- </subscriptionRecoveryPolicy>
- </policyEntry>
- </policyEntries>
- </policyMap>
- </destinationPolicy>
- <!-- The transport connectors ActiveMQ will listen to -->
- <transportConnectors>
- <transportConnector name="openwire" uri="tcp://192.168.1.148:61616" discoveryUri="multicast://default"/>
- <transportConnector name="ssl" uri="ssl://192.168.1.148:61617"/>
- <transportConnector name="stomp" uri="stomp://192.168.1.148:61613"/>
- <transportConnector name="xmpp" uri="xmpp://192.168.1.148:61222"/>
- </transportConnectors>
- <!-- 消息持久化方式 -->
- <persistenceAdapter>
- <amqPersistenceAdapter directory="${activemq.base}/data"/>
- </persistenceAdapter>
- </broker>
- <!-- lets create a command agent to respond to message based admin commands on the ActiveMQ.Agent topic -->
- <commandAgent xmlns="http://activemq.org/config/1.0"/>
- <!-- An embedded servlet engine for serving up the Admin console -->
- <jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
- <connectors>
- <nioConnector port="8161" />
- </connectors>
- <handlers>
- <webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" />
- <webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true" />
- </handlers>
- </jetty>
- </beans>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:amq="http://activemq.org/config/1.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://activemq.org/config/1.0 http://activemq.apache.org/schema/activemq-core.xsd
- http://activemq.apache.org/camel/schema/spring>
- <!-- persistent="true"表示要持久化存储消息,和子元素persistenceAdapter结合使用 -->
- <!-- dataDirectory默认的存储持久化数据的目录 -->
- <!-- brokerName 设置broker的name,在注意在网络上必须是唯一的-->
- <!-- 更多参考http://activemq.apache.org/xbean-xml-reference-50.html#XBeanXMLReference5.0-brokerelement -->
- <broker xmlns="http://activemq.org/config/1.0" brokerName="192.168.1.148" persistent ="true" dataDirectory="${activemq.base}/data" useShutdownHook="false">
- <!-- Destination specific policies using destination names or wildcards -->
- <!-- wildcards意义见http://activemq.apache.org/wildcards.html -->
- <destinationPolicy>
- <policyMap>
- <policyEntries>
- <!-- 这里使用了wildcards,表示所有以EUCITA开头的topic -->
- <policyEntry topic="EUCITA.>" producerFlowControl="false" memoryLimit="10mb">
- <!-- 分发策略 -->
- <dispatchPolicy>
- <!-- 按顺序分发 -->
- <strictOrderDispatchPolicy/>
- </dispatchPolicy>
- <!-- 恢复策略-->
- <subscriptionRecoveryPolicy>
- <!-- 只恢复最后一个message -->
- <lastImageSubscriptionRecoveryPolicy/>
- </subscriptionRecoveryPolicy>
- </policyEntry>
- </policyEntries>
- </policyMap>
- </destinationPolicy>
- <!-- The transport connectors ActiveMQ will listen to -->
- <transportConnectors>
- <transportConnector name="openwire" uri="tcp://192.168.1.148:61616" discoveryUri="multicast://default"/>
- <transportConnector name="ssl" uri="ssl://192.168.1.148:61617"/>
- <transportConnector name="stomp" uri="stomp://192.168.1.148:61613"/>
- <transportConnector name="xmpp" uri="xmpp://192.168.1.148:61222"/>
- </transportConnectors>
- <!-- 消息持久化方式 -->
- <persistenceAdapter>
- <amqPersistenceAdapter directory="${activemq.base}/data"/>
- </persistenceAdapter>
- </broker>
- <!-- lets create a command agent to respond to message based admin commands on the ActiveMQ.Agent topic -->
- <commandAgent xmlns="http://activemq.org/config/1.0"/>
- <!-- An embedded servlet engine for serving up the Admin console -->
- <jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
- <connectors>
- <nioConnector port="8161" />
- </connectors>
- <handlers>
- <webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" />
- <webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true" />
- </handlers>
- </jetty>
- </beans>
注释
关于XML配置中元素的具体信息可以参考http://activemq.apache.org/xbean-xml-reference-50.html 下面介绍本篇配置使用的一些重要元素。
DispathPolicy
ActiveMQ支持3中不同的分发策略(避免翻译了以后误解,这里用原文):
- <roundRobinDispatchPolicy>:Simple dispatch policy that sends a message to every subscription that matches the message.
- <simpleDispatchPolicy>:Simple dispatch policy that sends a message to every subscription that matches the message.
- <strictOrderDispatchPolicy>:Dispatch policy that causes every subscription to see messages in the same order.
SubscriptionRecoveryPolicy
ActiveMQ支持6种恢复策略,可以自行选择使用不同的策略
- <fixedCountSubscriptionRecoveryPolicy>: keep a fixed count of last messages.
- <fixedSizedSubscriptionRecoveryPolicy>: keep a fixed amount of memory available in RAM for message history which is evicted in time order.
- <lastImageSubscriptionRecoveryPolicy>:only keep the last message.
- <noSubscriptionRecoveryPolicy>:disable recovery of messages.
- <queryBasedSubscriptionRecoveryPolicy>:perform a user specific query mechanism to load any messages they may have missed.
- <timedSubscriptionRecoveryPolicy>:keep a timed buffer of messages around in memory and use that to recover new subscriptions.
PersistenceAdapter
http://activemq.apache.org/persistence 讲解了关于persistence的信息。ActiveMQ5.0使用AMQ Message Store 持久化消息,这种方式提供了很好的性能(The AMQ Message Store is an embeddable transactional message storage solution that is extremely fast and reliable.) 默认使用该存储方式即可,如果想使用JDBC来存储,可以查找文档配置。
Summary
本篇文章只提供了基本配置信息。如果需要更多的文章,可以查看ActiveMQ的文档。
讲了安装和简单的配置,下一篇将介绍和Sping的整合,以及多个queue,多个topic,多个producer,多个consumer的配置,使用。
相关推荐
JMS是一种与厂商无关的 API,用来访问消息收发系统消息。它类似于JDBC(Java Database Connectivity),提供了应用程序之间异步通信的功能。 本文档介绍ActiveMQ的基本使用和部分性能优化。
本教程旨在帮助activeMQ初学者入门,通过本示例,能完全理解activeMQ的基本概念,为分布式应用打下基础。 本示例中,使用maven管理,完美解决各种依赖问题,不需要自行配置,导入项目等待eclipse自行下载jar包后即可...
+conf (activeMQ配置目录,包含最基本的activeMQ配置文件) +data (默认是空的) +docs (index,replease版本里面没有文档,-.-b不知道为啥不带) +example (几个例子 +lib (activemMQ使用到的lib) -apache-...
+conf (activeMQ配置目录,包含最基本的activeMQ配置文件) +data (默认是空的) +docs (index,replease版本里面没有文档,-.-b不知道为啥不带) +example (几个例子 +lib (activemMQ使用到的lib) -apache-activemq...
n 二: ActiveMQ安装和基本使用 包括:通过源码安装、基本的配置示例、启动、测试运行、关闭等 n 三:理解和掌握JMS 包括:基本概念、消息结构、可靠性机制、PTP、Pub/Sub、API结构、JMS应用开 发的基本步骤、持久和...
一键生成webXml、initXml、contextXml等系统配置文件 配置控制生成输出文件(listenter、filter、quartz、activeMQ、redis、webXml、initXml、contextXml) 项目可统计在线人数,无操作超时退出,监听网络请求,...
集成SSH框架的系统从职责上分为...具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate。
下面通过学习与配置,实现消息服务的基本功能:发送与接收。Spring对JMS提供了很好的支持,可以通过JmsTemplate来方便地实现消息服务。这里,我们的消息服务不涉及事务管理。下面简单说明实例。
内容包括MQ概述和工作流程,启动过程与启动异常分析,消息的基本模型,基于队列的生产者和消费者,基于发布-订阅的生产者和消费者,消息的同步消费和异步消费,消息的数据类型,身份认证,持久化配置与实现,...
货柜每个WSO2容器未更改的配置/功能是: Log4j配置Admin Web Carbon Console的用户/密码H2数据库这个想法是创建几个基本的docker镜像,我们可以在其中组合复杂的架构来实现(微)服务。 然后,可用于创建基本docker...
jun_spring 项目项目说明基于Spring家族的360度整合,基本覆盖开发用九成以上的场景,即开即用,主要是详尽的了解项目里面的每个stater跟lib组件及功能,为个人及项目实际开发提供助力,帮组项目快速开发,本项目是...
分布式架构的基本理论CAP、BASE以及其应用 什么是分布式架构下的高可用设计 构架高性能的分布式架构 构建分布式架构最重要因素 CDN静态文件访问 分布式存储 分布式搜索引擎 应用发布与监控 应用容灾及机房...
springboot简介,springboot入门代码实例,热部署,以及配置原理,springboot对mybatis,c3p0,springdata,junit,freeMarker,redis,solr,activeMQ,springboot部署,对于刚接触的springboot微服务框架,熟悉这个文档,基本上...
意在让大家熟悉短信验证码登录实现的基本思路进度2020/4/6项目基础环境的建造2020/4/6 redis的整合2020/4/6 activemq的整合2020/4/6阿里大于短信的整合2020/4/6使用postman进行测试2020/4/6登陆接口的完成使用各位...
│ 第32节:Nginx的进程结构、基本配置.avi │ 第33节:Nginx常用核心模块指令.avi │ 第34节:Nginx的Http模块部分的指令.avi │ 第35节:Nginx的Location区段.avi │ 第36节:Nginx的反向代理模块.avi │ 第37节:...
ActiveMQ | 消息队列 | [http://activemq.apache.org/](http://activemq.apache.org/) JStorm | 实时流式计算框架 | [http://jstorm.io/](http://jstorm.io/) FastDFS | 分布式文件系统 | ...
10.1.3在spring中安装activemq 10.2协同使用jms和spring 10.2.1处理冗长失控的jms代码 10.2.2使用jms模板 10.2.3转换消息 10.2.4将spring的网关支持类应用于jms 10.3创建消息驱动pojo 10.3.1创建消息监听器 ...
10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关支持类应用于JMS 10.3 创建消息驱动POJO 10.3.1 创建...
10.1.3 在Spring中安装ActiveMQ 10.2 协同使用JMS和Spring 10.2.1 处理冗长失控的JMS代码 10.2.2 使用JMS模板 10.2.3 转换消息 10.2.4 将Spring的网关支持类应用于JMS 10.3 创建消息驱动POJO 10.3.1 创建...
通过jmx监视基于Java的应用程序,例如Tomcat,JBoss,ActiveMQ。 提供有关堆内存分配,GC活动和log4j日志的图表和警报。 为PROD和devops环境提供广泛的监视和日志记录 资料下载 阅读以获取基本的App安装说明阅读以...