HornetQ学习系列(3)

来源:互联网 发布:java登录验证码实现 编辑:程序博客网 时间:2024/06/07 20:32

今天看下如何使用HornetQ,主要包括如何启动,停止HornetQ服务以及如何配置一些参数。


问题1: HornetQ服务怎么启动和停止?



HornetQ的目录结构如下,在bin目录下有run.bat(Windows),run.sh(Linux)启动服务,stop.bat(Windows),stop.sh(Linux)停止服务


出于好奇,我们就打开run.sh看看里面都设置了哪些东东。

主要设置了日志目录,CLASSPATH,$CONFIG_DIR,JVM等一些参数,并且在默认条件下启动脚本读取的是config/stand-alone/non-clustered目录下的配置文件

// run.sh


问题2:HornetQ有哪几种配置方式?



有4种配置方式,它们分别是:

  • 非集群方式的独立服务器配置

  • 集群方式的独立服务器配置

  • 非集群方式运行于JBoss应用服务器

  • 集群方式运行于JBoss应用服务器

config目录下可以看到不同方式的配置文件

1)独立部署的集群和非集群配置目录

2)应用于Jboss服务器的集群和非集群配置目录


问题3:各个配置文件作用都是什么?



每种配置方式都包含hornetq-beans.xml/hornetq-configuration.xml/hornetq-jms.xml等几个配置文件,我们就以standalone-non-culstered方式为例,来看看各个配置文件都是配置什么的,作用是什么?

1)hornetq-beans.xml 

note:如果是运行在JBoss应用服务器内,则为 hornetq-jboss-beans.xml

这里面定义了HornetQ中用到的各个bean,以及各个bean之间的依赖关系,这些bean被Jboss Microcontainer装载和运行。

以下内容引用自HornetQ 2.1用户手册

  • JNDIServer

    很多客户端需要JNDI来获取JMS的对象,因此我们提供了一个JNDI服务来满足它们。如果不需要JNDI,可以在配置 文件中将它们注释掉。

  • MBeanServer

    这个对象提供了JMX管理接口。它是一个MBean服务器,可管理的对象可以注册到这个服务器上。 通常这就是一个JVM内部的默认的平台MBean服务器。如果不需要些服务,可以在配置文件中将其注释或删除。

  • Configuration

    这是HornetQ的Configuration对象。默认时它是一个FileConfiguration对象。它可以从文件系统中读取 配置信息。有些情况下(如嵌入式HornetQ)你可以将它定义为其它对象,以便用其它方法获得配置信息。

  • Security Manager. 可配置的安全管理器。默认的安全管理器使用 hornetq-users.xml 文件中的配置信息。 它也可以配置为一个JAAS的安全管理器。当HornetQ运行于JBoss应用服务器中时,它还可以配置为JBoss的安全管理器,以达到更紧密的集成。 如果不需要安全管理,你也可以将它删除。

  • HornetQServer

    这是HornetQ的核心服务对象,几乎所有的核心功能都在这里。

  • JMSServerManager

    这个对象将hornetq-jms.xml文件中定义的JMS的对象进行部署,比如JMS Queues, Topics 以及ConnectionFactory。它还提供一套简单的管理接口以方便地对这些JMS对象进行管理。通常它只是将工作代理给 核心服务器。如果你不需要在服务器端进行JMS对象的部署与管理,可以将它从配置中去掉。

2)hornetq-configuration.xml

这个文件主要针对HornetQ做配置的。包括队列大小,队列满时应采用的策略等等。

以下内容引用自HornetQ 2.1用户手册

名称类型说明默认值backupBooleantrue表示本服务器是集群中另一个服务器的备份服务器falsebackup-connector-refString用于连接备份服务器的连接器
bindings-directoryString保存持久绑定的目录the directory to store the persisted bindings todata/bindingsclusteredBooleantrue表示服务器是集群中的节点falseconnection-ttl-overrideLong表示在接收到一个ping之前连接保持有效的时间(单位毫秒)-1create-bindings-dirBooleantrue表示服务器在启动时创建绑定的目录truecreate-journal-dirBooleantrue表示创建日志目录truefile-deployment-enabledBooleantrue表示服务器从配置文件中读取配置trueid-cache-sizeInteger预先生成的消息id的缓存大小2000journal-buffer-sizeLong日志内部缓存的大小128 KiBjournal-buffer-timeoutLongT将日志缓冲数据刷新的等待时间(纳秒)20000journal-compact-min-filesInteger开始整理数据的最小数据文件数。10journal-compact-percentageInteger开始压缩日志时的有效数据百分比。30journal-directoryString日志文件所在的位置data/journaljournal-file-sizeLong每个日志文件的大小(字节)128 * 1024journal-max-ioInteger某一时刻保存在AIO队列中的最大写请求数500journal-min-filesInteger预先创建的日志文件数2journal-sync-transactionalBoolean如果是true,等事务数据同步到日志后再向客户端返回truejournal-sync-non-transactionalBoolean如果是true,等非事务数据到日志后再向客户端返回truejournal-typeASYNCIO|NIO日志存取的方式ASYNCIOjmx-management-enabledBooleantrue表示通过JMX可以使用管理接口truejmx-domainString用于HornetQ MBean注册到MBeanServer的JMX域名org.hornetqlarge-messages-directoryString存放大消息的目录data/largemessagesmanagement-addressString管理消息发送的地址jms.queue.hornetq.managementcluster-userString集群连接的用户名HORNETQ.CLUSTER.ADMIN.USERcluster-passwordString集群连接的用户密码CHANGE ME!!management-notification-addressString用于接收管理通知的地址hornetq.notificationsmessage-counter-enabledBooleantrue表示使用消息计数器falsemessage-counter-max-day-historyInteger消息计数器历史保存的天数10message-counter-sample-periodLong消息计数器取样的间隔(毫秒)10000message-expiry-scan-periodLong过期消息扫描周期(毫秒)30000message-expiry-thread-priorityInteger过期消息线程的优先级3paging-directoryString分页转存消息的保存目录data/pagingpersist-delivery-count-before-deliveryBooleantrue表示传递计数在传递之前保存。false表示只有当消息被取消时才保存。falsepersistence-enabledBooleantrue表示服务器使用基于文件的日志做持久化truepersist-id-cacheBooleantrue表示id被保存到日志中truescheduled-thread-pool-max-sizeInteger可计划线程池的线程数。5security-enabledBooleantrue表示使用安全功能truesecurity-invalidation-intervalLong安全缓存的有效时间(毫秒)10000thread-pool-max-sizeInteger主线程池的线程数。-1表示数量不限-1async-connection-execution-enabledBoolean接收的数据包是否由线程池的线程来处理truetransaction-timeoutLong事务在建立后经过多长时间后可以从资源管理器(resource manager)删除(毫秒)60000transaction-timeout-scan-periodLong扫描超时事务的间隔(毫秒)1000wild-card-routing-enabledBooleantrue表示服务器支持通配符路由truememory-measure-intervalLong采样JVM内存的周期(毫秒,-1表示不采样)-1memory-warning-thresholdInteger可用内存达到这个百分比时,给出警告信息25connectorsConnector连接器的配置
connector.name (attribute)String连接器的名字-必需指定的参数
connector.factory-classString连接工厂的实现类名-必需指定的参数
connector.param连接器的配置参数一个键-值对,表示一个连接器的参数配置。一个连接器可以有多个这样的参数
connector.param.key (属性)String参数的键 - 必需指定的参数
connector.param.value (attribute)String参数的值 - 必需指定的参数
acceptorsAcceptor一组接收器
acceptor.name (属性)String接收器的名字 - 可选
acceptor.factory-classString接收器工厂实现类名 - 必需指定的参数
acceptor.param一个接收器的配置参数用来配置接收器的键-值对。一个接收器可以有多个参数。
acceptor.param.key (属性)String参数的键 - 必需指定的参数
acceptor.param.value (attribute)String参数的值 - 必需指定的参数
broadcast-groupsBroadcastGroup一组广播组
broadcast-group.name (attribute)String广播组的名字(必需是唯一的)- 必需指定的参数
broadcast-group.local-bind-addressString数据报文套接字的本地绑定地址内系统内核选择的IP地址broadcast-group.local-bind-portInteger数据报文套接字的本地绑定端口-1 (匿名端口)broadcast-group.group-addressString广播地址 - 必需指定的参数
broadcast-group.group-portInteger广播使用的UDP端口 - 必需指定的参数
broadcast-group.broadcast-periodLong广播的时间间隔(毫秒)2000broadcast-group.connector-ref一个连接器对广播的一个连接器和一个可选的备份连接器。一个广播组可以有多个这样的连接器对
broadcast-group.connector-ref.connector-name (attribute)String主连接器名 - 必需指定的参数
broadcast-group.connector-ref.backup-connector-name (attribute)String备份连接器名 - 可选的参数
discovery-groupsDiscoveryGroup一组发现组
discovery-group.name (属性)String发现组的名字(具有唯一性) - 必需指定的参数
discovery-group.local-bind-addressString发现组所绑定的本地地址
discovery-group.group-addressString发现组监听的广播IP地址 - 必需指定的参数
discovery-group.group-portInteger广播组监听的UDP端口 - 必需指定的参数
discovery-group.refresh-timeoutInteger发现组等待更新的时间。如果某个服务器上次广播到达后经过这个时间后还没有收到下次广播,那么 该服务器的连接器对将从列表中删除5000 (毫秒)divertsDivert一组转发器
divert.name (attribute)String转发器的名字(必需是唯一的) - 必需指定的参数
divert.routing-nameString转发器的路由名称 - 必需指定的参数
divert.addressString转发器的源地址 - 必需指定的参数
divert.forwarding-addressString转发器的转发地址 - 必需指定的参数
divert.exclusiveBoolean转发器是否是唯一的falsedivert.filterString可选的核心过滤器表达式nulldivert.transformer-class-nameString可选的转换器的名字
queuesQueue一组预先配置的队列
queues.name (属性)String队列独特的名字
queues.addressString队列的地址 - 必需指定的参数
queues.filterString队列可选的核心过滤器表达式nullqueues.durableBoolean是否持久队列truebridgesBridge一组桥
bridges.name (属性)String桥的独特名字
bridges.queue-nameString桥接收消息的源队列名 - 必需指定的参数
bridges.forwarding-addressString桥要转发的地址。如果没有指定则使用原始的地址nullbridges.filterString可选的核心过滤器表达式nullbridges.transformer-class-nameString可选的转换器类名nullbridges.retry-intervalLong重试的时间间隔(毫秒)2000 msbridges.retry-interval-multiplierDouble重试间隔的递增系数1.0bridges.reconnect-attemptsInteger最大重试次数,-1代表无限次-1bridges.failover-on-server-shutdownBoolean如果目标服务器正常关机是否仍进行失效备援falsebridges.use-duplicate-detectionBoolean是否在转发的消息中添加重复检测的头truebridges.discovery-group-refString桥使用的发现组名nullbridges.connector-ref.connector-name (属性)String主连接的连接器名
bridges.connector-ref.backup-connector-name (属性)String备份连接的连接器名(可选)nullcluster-connectionsClusterConnection一组集群连接
cluster-connections.name (attribute)String集群连接的独特名字
cluster-connections.addressString集群连接的地址名
cluster-connections.forward-when-no-consumersBoolean如果目标没有合适的接收者,是否仍然向它分配消息?falsecluster-connections.max-hopsInteger集群拓扑中的最大跳数(hops)1cluster-connections.retry-intervalLong集群连接重试的间隔(毫秒)2000cluster-connections.use-duplicate-detectionBoolean是否在转发的消息中添加重复检测的消息头truecluster-connections.discovery-group-refString桥所使用的发现组的名字nullcluster-connections.connector-ref.connector-name (属性)String主连接的连接器名字
cluster-connections.connector-ref.backup-connector-name (属性)String可选的备份连接所使用的连接器名字nullsecurity-settingsSecuritySetting一组安全设置
security-settings.match (属性)String安全所应用的地址匹配字符串
security-settings.permission安全许可地址的一个许可
security-settings.permission.type (attribute)许可类型许可的类型
security-settings.permission.roles (attribute)Roles以逗号分隔的一组角色,这些角色将拥有相应的许可
address-settingsAddressSetting一组地址设置
address-settings.dead-letter-addressString死消息所发往的地址
address-settings.max-delivery-attemptsInteger发往死信地址之前所尝试的传递次数10address-settings.expiry-addressString过期消息所发往的地址
address-settings.redelivery-delayLong重新传递一个取消的消息前所等待的时间(毫秒)0address-settings.last-value-queueboolean队列是否是一个最新值队列falseaddress-settings.page-size-bytesLong一个地址的分页的大小(字节)10 * 1024 * 1024address-settings.max-size-bytesLong地址的分页转存的最大值(字节)-1address-settings.redistribution-delayLong队列最后一个接收者关闭后需要等待多长时间再将消息重新分配(毫秒)-1

3)hornetq-jms.xml

这个文件主要用来配置JMS服务的,内容包括JMS Queue, Topic和ConnectionFactory,这些配置会被部署到JNDI服务中。如果你不使用JMS,就不需要管这个文件了。

以下内容引用自HornetQ 2.1用户手册

名称类型说明默认值connection-factoryConnectionFactory一组注册到JNDI的连接工厂
connection-factory.auto-groupBoolean是否自动使用消息组falseconnection-factory.connectorsString一组供连接工厂使用的连接器
connection-factory.connectors.connector-ref.connector-name (属性)String连接主服务器的连接器名
connection-factory.connectors.connector-ref.backup-connector-name (attribute)String连接备份服务器的连接器名
connection-factory.discovery-group-ref.discovery-group-name (属性)String连接工厂的发现组名
connection-factory.discovery-initial-wait-timeoutLong发现组首次等待广播的时间10000connection-factory.block-on-acknowledgeBoolean消息是否以同步方式通知falseconnection-factory.block-on-non-durable-sendBoolean是否以同步方式发送非持久消息falseconnection-factory.block-on-durable-sendBoolean是否以同步方式发送持久消息trueconnection-factory.call-timeoutLong远程调用超时时间(毫秒)30000connection-factory.client-failure-check-periodLong客户端如果在这个时间内没有收到服务器数据包,将认为连接出现故障。5000connection-factory.client-idString连接工厂预先配置的客户IDnullconnection-factory.connection-load-balancing-policy-class-nameString负载均衡类名org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicyconnection-factory.connection-ttlLong连接的存活时间(毫秒)1 * 60000connection-factory.consumer-max-rateInteger接收者每秒钟接收消息的最快速度-1connection-factory.consumer-window-sizeInteger接收者流控制容器大小(字节)1024 * 1024connection-factory.dups-ok-batch-sizeInteger在DUPS_OK_ACKNOWLEDGE模式下批量通知的大小(字节)1024 * 1024connection-factory.failover-on-initial-connectionBoolean如果首次连接主服务器失败是否失效备援连接到备份服务器falseconnection-factory.failover-on-server-shutdownBoolean在服务器停机时是否进行失效备援falseconnection-factory.min-large-message-sizeInteger大消息的最小值,大小超过该值的按大消息处理100 * 1024connection-factory.cache-large-message-clientBooleantrue表示这个连接工厂会将大消息保存在临时文件中falseconnection-factory.pre-acknowledgeBoolean是否在消息发送之前提前通知falseconnection-factory.producer-max-rateInteger发送消息的最大速度-1connection-factory.producer-window-sizeInteger发送者发送消息的窗口大小1024 * 1024connection-factory.confirmation-window-sizeInteger会话恢复的确认窗口大小(字节)1024 * 1024connection-factory.reconnect-attemptsInteger重试的最大次数, -1 表示无限次0connection-factory.retry-intervalLong每次重试的时间间隔(毫秒)2000connection-factory.retry-interval-multiplierDouble重试间隔时间的递增系数1.0connection-factory.max-retry-intervalInteger最大重试间隔。2000connection-factory.scheduled-thread-pool-max-sizeInteger可计划线程池的大小5connection-factory.thread-pool-max-sizeInteger线程池大小-1connection-factory.transaction-batch-sizeInteger使用事务性会话时发送通知的批量大小(字节)1024 * 1024connection-factory.use-global-poolsBoolean是否使用全局线程池truequeueQueue创建并注册到JNDI的队列
queue.name (属性)String队列的唯一名字
queue.entryString队列的JNDI的上下文(context)。一个队列可以有多个JNDI的上下文
queue.durableBoolean是否持久队列truequeue.filterString可选的队列过滤器表达式
topicTopic创建并注册到JNDI的话题
topic.name (属性)String话题的唯一名
topic.entryString话题的JNDI上下文(context)。一个话题可以有多个上下文。

4)hornetq-users.xml

这个文件主要配置HornetQ的用户名、密码和角色。

5)jndi.properties

这个是配置JNDI服务的

6)logging.properties

这是HornetQ自己独立的日志框架,不依赖其他框架


原创粉丝点击