HornetQ学习系列(3)

今天看下如何使用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表示本服务器是集群中另一个服务器的备份服务器false
backup-connector-refString用于连接备份服务器的连接器
bindings-directoryString保存持久绑定的目录the directory to store the persisted bindings todata/bindings
clusteredBooleantrue表示服务器是集群中的节点false
connection-ttl-overrideLong表示在接收到一个ping之前连接保持有效的时间(单位毫秒)-1
create-bindings-dirBooleantrue表示服务器在启动时创建绑定的目录true
create-journal-dirBooleantrue表示创建日志目录true
file-deployment-enabledBooleantrue表示服务器从配置文件中读取配置true
id-cache-sizeInteger预先生成的消息id的缓存大小2000
journal-buffer-sizeLong日志内部缓存的大小128 KiB
journal-buffer-timeoutLongT将日志缓冲数据刷新的等待时间(纳秒)20000
journal-compact-min-filesInteger开始整理数据的最小数据文件数。10
journal-compact-percentageInteger开始压缩日志时的有效数据百分比。30
journal-directoryString日志文件所在的位置data/journal
journal-file-sizeLong每个日志文件的大小(字节)128 * 1024
journal-max-ioInteger某一时刻保存在AIO队列中的最大写请求数500
journal-min-filesInteger预先创建的日志文件数2
journal-sync-transactionalBoolean如果是true,等事务数据同步到日志后再向客户端返回true
journal-sync-non-transactionalBoolean如果是true,等非事务数据到日志后再向客户端返回true
journal-typeASYNCIO|NIO日志存取的方式ASYNCIO
jmx-management-enabledBooleantrue表示通过JMX可以使用管理接口true
jmx-domainString用于HornetQ MBean注册到MBeanServer的JMX域名org.hornetq
large-messages-directoryString存放大消息的目录data/largemessages
management-addressString管理消息发送的地址jms.queue.hornetq.management
cluster-userString集群连接的用户名HORNETQ.CLUSTER.ADMIN.USER
cluster-passwordString集群连接的用户密码CHANGE ME!!
management-notification-addressString用于接收管理通知的地址hornetq.notifications
message-counter-enabledBooleantrue表示使用消息计数器false
message-counter-max-day-historyInteger消息计数器历史保存的天数10
message-counter-sample-periodLong消息计数器取样的间隔(毫秒)10000
message-expiry-scan-periodLong过期消息扫描周期(毫秒)30000
message-expiry-thread-priorityInteger过期消息线程的优先级3
paging-directoryString分页转存消息的保存目录data/paging
persist-delivery-count-before-deliveryBooleantrue表示传递计数在传递之前保存。false表示只有当消息被取消时才保存。false
persistence-enabledBooleantrue表示服务器使用基于文件的日志做持久化true
persist-id-cacheBooleantrue表示id被保存到日志中true
scheduled-thread-pool-max-sizeInteger可计划线程池的线程数。5
security-enabledBooleantrue表示使用安全功能true
security-invalidation-intervalLong安全缓存的有效时间(毫秒)10000
thread-pool-max-sizeInteger主线程池的线程数。-1表示数量不限-1
async-connection-execution-enabledBoolean接收的数据包是否由线程池的线程来处理true
transaction-timeoutLong事务在建立后经过多长时间后可以从资源管理器(resource manager)删除(毫秒)60000
transaction-timeout-scan-periodLong扫描超时事务的间隔(毫秒)1000
wild-card-routing-enabledBooleantrue表示服务器支持通配符路由true
memory-measure-intervalLong采样JVM内存的周期(毫秒,-1表示不采样)-1
memory-warning-thresholdInteger可用内存达到这个百分比时,给出警告信息25
connectorsConnector连接器的配置
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广播的时间间隔(毫秒)2000
broadcast-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转发器是否是唯一的false
divert.filterString可选的核心过滤器表达式null
divert.transformer-class-nameString可选的转换器的名字
queuesQueue一组预先配置的队列
queues.name (属性)String队列独特的名字
queues.addressString队列的地址 - 必需指定的参数
queues.filterString队列可选的核心过滤器表达式null
queues.durableBoolean是否持久队列true
bridgesBridge一组桥
bridges.name (属性)String桥的独特名字
bridges.queue-nameString桥接收消息的源队列名 - 必需指定的参数
bridges.forwarding-addressString桥要转发的地址。如果没有指定则使用原始的地址null
bridges.filterString可选的核心过滤器表达式null
bridges.transformer-class-nameString可选的转换器类名null
bridges.retry-intervalLong重试的时间间隔(毫秒)2000 ms
bridges.retry-interval-multiplierDouble重试间隔的递增系数1.0
bridges.reconnect-attemptsInteger最大重试次数,-1代表无限次-1
bridges.failover-on-server-shutdownBoolean如果目标服务器正常关机是否仍进行失效备援false
bridges.use-duplicate-detectionBoolean是否在转发的消息中添加重复检测的头true
bridges.discovery-group-refString桥使用的发现组名null
bridges.connector-ref.connector-name (属性)String主连接的连接器名
bridges.connector-ref.backup-connector-name (属性)String备份连接的连接器名(可选)null
cluster-connectionsClusterConnection一组集群连接
cluster-connections.name (attribute)String集群连接的独特名字
cluster-connections.addressString集群连接的地址名
cluster-connections.forward-when-no-consumersBoolean如果目标没有合适的接收者,是否仍然向它分配消息?false
cluster-connections.max-hopsInteger集群拓扑中的最大跳数(hops)1
cluster-connections.retry-intervalLong集群连接重试的间隔(毫秒)2000
cluster-connections.use-duplicate-detectionBoolean是否在转发的消息中添加重复检测的消息头true
cluster-connections.discovery-group-refString桥所使用的发现组的名字null
cluster-connections.connector-ref.connector-name (属性)String主连接的连接器名字
cluster-connections.connector-ref.backup-connector-name (属性)String可选的备份连接所使用的连接器名字null
security-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发往死信地址之前所尝试的传递次数10
address-settings.expiry-addressString过期消息所发往的地址
address-settings.redelivery-delayLong重新传递一个取消的消息前所等待的时间(毫秒)0
address-settings.last-value-queueboolean队列是否是一个最新值队列false
address-settings.page-size-bytesLong一个地址的分页的大小(字节)10 * 1024 * 1024
address-settings.max-size-bytesLong地址的分页转存的最大值(字节)-1
address-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是否自动使用消息组false
connection-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发现组首次等待广播的时间10000
connection-factory.block-on-acknowledgeBoolean消息是否以同步方式通知false
connection-factory.block-on-non-durable-sendBoolean是否以同步方式发送非持久消息false
connection-factory.block-on-durable-sendBoolean是否以同步方式发送持久消息true
connection-factory.call-timeoutLong远程调用超时时间(毫秒)30000
connection-factory.client-failure-check-periodLong客户端如果在这个时间内没有收到服务器数据包,将认为连接出现故障。5000
connection-factory.client-idString连接工厂预先配置的客户IDnull
connection-factory.connection-load-balancing-policy-class-nameString负载均衡类名org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy
connection-factory.connection-ttlLong连接的存活时间(毫秒)1 * 60000
connection-factory.consumer-max-rateInteger接收者每秒钟接收消息的最快速度-1
connection-factory.consumer-window-sizeInteger接收者流控制容器大小(字节)1024 * 1024
connection-factory.dups-ok-batch-sizeInteger在DUPS_OK_ACKNOWLEDGE模式下批量通知的大小(字节)1024 * 1024
connection-factory.failover-on-initial-connectionBoolean如果首次连接主服务器失败是否失效备援连接到备份服务器false
connection-factory.failover-on-server-shutdownBoolean在服务器停机时是否进行失效备援false
connection-factory.min-large-message-sizeInteger大消息的最小值,大小超过该值的按大消息处理100 * 1024
connection-factory.cache-large-message-clientBooleantrue表示这个连接工厂会将大消息保存在临时文件中false
connection-factory.pre-acknowledgeBoolean是否在消息发送之前提前通知false
connection-factory.producer-max-rateInteger发送消息的最大速度-1
connection-factory.producer-window-sizeInteger发送者发送消息的窗口大小1024 * 1024
connection-factory.confirmation-window-sizeInteger会话恢复的确认窗口大小(字节)1024 * 1024
connection-factory.reconnect-attemptsInteger重试的最大次数, -1 表示无限次0
connection-factory.retry-intervalLong每次重试的时间间隔(毫秒)2000
connection-factory.retry-interval-multiplierDouble重试间隔时间的递增系数1.0
connection-factory.max-retry-intervalInteger最大重试间隔。2000
connection-factory.scheduled-thread-pool-max-sizeInteger可计划线程池的大小5
connection-factory.thread-pool-max-sizeInteger线程池大小-1
connection-factory.transaction-batch-sizeInteger使用事务性会话时发送通知的批量大小(字节)1024 * 1024
connection-factory.use-global-poolsBoolean是否使用全局线程池true
queueQueue创建并注册到JNDI的队列
queue.name (属性)String队列的唯一名字
queue.entryString队列的JNDI的上下文(context)。一个队列可以有多个JNDI的上下文
queue.durableBoolean是否持久队列true
queue.filterString可选的队列过滤器表达式
topicTopic创建并注册到JNDI的话题
topic.name (属性)String话题的唯一名
topic.entryString话题的JNDI上下文(context)。一个话题可以有多个上下文。

4)hornetq-users.xml

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

5)jndi.properties

这个是配置JNDI服务的

6)logging.properties

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值