HornetQ学习系列(3)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hezikui1987/article/details/77825710

今天看下如何使用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用户手册

名称 类型 说明 默认值
backup Boolean true表示本服务器是集群中另一个服务器的备份服务器 false
backup-connector-ref String 用于连接备份服务器的连接器
bindings-directory String 保存持久绑定的目录the directory to store the persisted bindings to data/bindings
clustered Boolean true表示服务器是集群中的节点 false
connection-ttl-override Long 表示在接收到一个ping之前连接保持有效的时间(单位毫秒) -1
create-bindings-dir Boolean true表示服务器在启动时创建绑定的目录 true
create-journal-dir Boolean true表示创建日志目录 true
file-deployment-enabled Boolean true表示服务器从配置文件中读取配置 true
id-cache-size Integer 预先生成的消息id的缓存大小 2000
journal-buffer-size Long 日志内部缓存的大小 128 KiB
journal-buffer-timeout Long T将日志缓冲数据刷新的等待时间(纳秒) 20000
journal-compact-min-files Integer 开始整理数据的最小数据文件数。 10
journal-compact-percentage Integer 开始压缩日志时的有效数据百分比。 30
journal-directory String 日志文件所在的位置 data/journal
journal-file-size Long 每个日志文件的大小(字节) 128 * 1024
journal-max-io Integer 某一时刻保存在AIO队列中的最大写请求数 500
journal-min-files Integer 预先创建的日志文件数 2
journal-sync-transactional Boolean 如果是true,等事务数据同步到日志后再向客户端返回 true
journal-sync-non-transactional Boolean 如果是true,等非事务数据到日志后再向客户端返回 true
journal-type ASYNCIO|NIO 日志存取的方式 ASYNCIO
jmx-management-enabled Boolean true表示通过JMX可以使用管理接口 true
jmx-domain String 用于HornetQ MBean注册到MBeanServer的JMX域名 org.hornetq
large-messages-directory String 存放大消息的目录 data/largemessages
management-address String 管理消息发送的地址 jms.queue.hornetq.management
cluster-user String 集群连接的用户名 HORNETQ.CLUSTER.ADMIN.USER
cluster-password String 集群连接的用户密码 CHANGE ME!!
management-notification-address String 用于接收管理通知的地址 hornetq.notifications
message-counter-enabled Boolean true表示使用消息计数器 false
message-counter-max-day-history Integer 消息计数器历史保存的天数 10
message-counter-sample-period Long 消息计数器取样的间隔(毫秒) 10000
message-expiry-scan-period Long 过期消息扫描周期(毫秒) 30000
message-expiry-thread-priority Integer 过期消息线程的优先级 3
paging-directory String 分页转存消息的保存目录 data/paging
persist-delivery-count-before-delivery Boolean true表示传递计数在传递之前保存。false表示只有当消息被取消时才保存。 false
persistence-enabled Boolean true表示服务器使用基于文件的日志做持久化 true
persist-id-cache Boolean true表示id被保存到日志中 true
scheduled-thread-pool-max-size Integer 可计划线程池的线程数。 5
security-enabled Boolean true表示使用安全功能 true
security-invalidation-interval Long 安全缓存的有效时间(毫秒) 10000
thread-pool-max-size Integer 主线程池的线程数。-1表示数量不限 -1
async-connection-execution-enabled Boolean 接收的数据包是否由线程池的线程来处理 true
transaction-timeout Long 事务在建立后经过多长时间后可以从资源管理器(resource manager)删除(毫秒) 60000
transaction-timeout-scan-period Long 扫描超时事务的间隔(毫秒) 1000
wild-card-routing-enabled Boolean true表示服务器支持通配符路由 true
memory-measure-interval Long 采样JVM内存的周期(毫秒,-1表示不采样) -1
memory-warning-threshold Integer 可用内存达到这个百分比时,给出警告信息 25
connectors Connector 连接器的配置
connector.name (attribute) String 连接器的名字-必需指定的参数
connector.factory-class String 连接工厂的实现类名-必需指定的参数
connector.param 连接器的配置参数 一个键-值对,表示一个连接器的参数配置。一个连接器可以有多个这样的参数
connector.param.key (属性) String 参数的键 - 必需指定的参数
connector.param.value (attribute) String 参数的值 - 必需指定的参数
acceptors Acceptor 一组接收器
acceptor.name (属性) String 接收器的名字 - 可选
acceptor.factory-class String 接收器工厂实现类名 - 必需指定的参数
acceptor.param 一个接收器的配置参数 用来配置接收器的键-值对。一个接收器可以有多个参数。
acceptor.param.key (属性) String 参数的键 - 必需指定的参数
acceptor.param.value (attribute) String 参数的值 - 必需指定的参数
broadcast-groups BroadcastGroup 一组广播组
broadcast-group.name (attribute) String 广播组的名字(必需是唯一的)- 必需指定的参数
broadcast-group.local-bind-address String 数据报文套接字的本地绑定地址 内系统内核选择的IP地址
broadcast-group.local-bind-port Integer 数据报文套接字的本地绑定端口 -1 (匿名端口)
broadcast-group.group-address String 广播地址 - 必需指定的参数
broadcast-group.group-port Integer 广播使用的UDP端口 - 必需指定的参数
broadcast-group.broadcast-period Long 广播的时间间隔(毫秒) 2000
broadcast-group.connector-ref 一个连接器对 广播的一个连接器和一个可选的备份连接器。一个广播组可以有多个这样的连接器对
broadcast-group.connector-ref.connector-name (attribute) String 主连接器名 - 必需指定的参数
broadcast-group.connector-ref.backup-connector-name (attribute) String 备份连接器名 - 可选的参数
discovery-groups DiscoveryGroup 一组发现组
discovery-group.name (属性) String 发现组的名字(具有唯一性) - 必需指定的参数
discovery-group.local-bind-address String 发现组所绑定的本地地址
discovery-group.group-address String 发现组监听的广播IP地址 - 必需指定的参数
discovery-group.group-port Integer 广播组监听的UDP端口 - 必需指定的参数
discovery-group.refresh-timeout Integer 发现组等待更新的时间。如果某个服务器上次广播到达后经过这个时间后还没有收到下次广播,那么 该服务器的连接器对将从列表中删除 5000 (毫秒)
diverts Divert 一组转发器
divert.name (attribute) String 转发器的名字(必需是唯一的) - 必需指定的参数
divert.routing-name String 转发器的路由名称 - 必需指定的参数
divert.address String 转发器的源地址 - 必需指定的参数
divert.forwarding-address String 转发器的转发地址 - 必需指定的参数
divert.exclusive Boolean 转发器是否是唯一的 false
divert.filter String 可选的核心过滤器表达式 null
divert.transformer-class-name String 可选的转换器的名字
queues Queue 一组预先配置的队列
queues.name (属性) String 队列独特的名字
queues.address String 队列的地址 - 必需指定的参数
queues.filter String 队列可选的核心过滤器表达式 null
queues.durable Boolean 是否持久队列 true
bridges Bridge 一组桥
bridges.name (属性) String 桥的独特名字
bridges.queue-name String 桥接收消息的源队列名 - 必需指定的参数
bridges.forwarding-address String 桥要转发的地址。如果没有指定则使用原始的地址 null
bridges.filter String 可选的核心过滤器表达式 null
bridges.transformer-class-name String 可选的转换器类名 null
bridges.retry-interval Long 重试的时间间隔(毫秒) 2000 ms
bridges.retry-interval-multiplier Double 重试间隔的递增系数 1.0
bridges.reconnect-attempts Integer 最大重试次数,-1代表无限次 -1
bridges.failover-on-server-shutdown Boolean 如果目标服务器正常关机是否仍进行失效备援 false
bridges.use-duplicate-detection Boolean 是否在转发的消息中添加重复检测的头 true
bridges.discovery-group-ref String 桥使用的发现组名 null
bridges.connector-ref.connector-name (属性) String 主连接的连接器名
bridges.connector-ref.backup-connector-name (属性) String 备份连接的连接器名(可选) null
cluster-connections ClusterConnection 一组集群连接
cluster-connections.name (attribute) String 集群连接的独特名字
cluster-connections.address String 集群连接的地址名
cluster-connections.forward-when-no-consumers Boolean 如果目标没有合适的接收者,是否仍然向它分配消息? false
cluster-connections.max-hops Integer 集群拓扑中的最大跳数(hops) 1
cluster-connections.retry-interval Long 集群连接重试的间隔(毫秒) 2000
cluster-connections.use-duplicate-detection Boolean 是否在转发的消息中添加重复检测的消息头 true
cluster-connections.discovery-group-ref String 桥所使用的发现组的名字 null
cluster-connections.connector-ref.connector-name (属性) String 主连接的连接器名字
cluster-connections.connector-ref.backup-connector-name (属性) String 可选的备份连接所使用的连接器名字 null
security-settings SecuritySetting 一组安全设置
security-settings.match (属性) String 安全所应用的地址匹配字符串
security-settings.permission 安全许可 地址的一个许可
security-settings.permission.type (attribute) 许可类型 许可的类型
security-settings.permission.roles (attribute) Roles 以逗号分隔的一组角色,这些角色将拥有相应的许可
address-settings AddressSetting 一组地址设置
address-settings.dead-letter-address String 死消息所发往的地址
address-settings.max-delivery-attempts Integer 发往死信地址之前所尝试的传递次数 10
address-settings.expiry-address String 过期消息所发往的地址
address-settings.redelivery-delay Long 重新传递一个取消的消息前所等待的时间(毫秒) 0
address-settings.last-value-queue boolean 队列是否是一个最新值队列 false
address-settings.page-size-bytes Long 一个地址的分页的大小(字节) 10 * 1024 * 1024
address-settings.max-size-bytes Long 地址的分页转存的最大值(字节) -1
address-settings.redistribution-delay Long 队列最后一个接收者关闭后需要等待多长时间再将消息重新分配(毫秒) -1

3)hornetq-jms.xml

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

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

名称 类型 说明 默认值
connection-factory ConnectionFactory 一组注册到JNDI的连接工厂
connection-factory.auto-group Boolean 是否自动使用消息组 false
connection-factory.connectors String 一组供连接工厂使用的连接器
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-timeout Long 发现组首次等待广播的时间 10000
connection-factory.block-on-acknowledge Boolean 消息是否以同步方式通知 false
connection-factory.block-on-non-durable-send Boolean 是否以同步方式发送非持久消息 false
connection-factory.block-on-durable-send Boolean 是否以同步方式发送持久消息 true
connection-factory.call-timeout Long 远程调用超时时间(毫秒) 30000
connection-factory.client-failure-check-period Long 客户端如果在这个时间内没有收到服务器数据包,将认为连接出现故障。 5000
connection-factory.client-id String 连接工厂预先配置的客户ID null
connection-factory.connection-load-balancing-policy-class-name String 负载均衡类名 org.hornetq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy
connection-factory.connection-ttl Long 连接的存活时间(毫秒) 1 * 60000
connection-factory.consumer-max-rate Integer 接收者每秒钟接收消息的最快速度 -1
connection-factory.consumer-window-size Integer 接收者流控制容器大小(字节) 1024 * 1024
connection-factory.dups-ok-batch-size Integer 在DUPS_OK_ACKNOWLEDGE模式下批量通知的大小(字节) 1024 * 1024
connection-factory.failover-on-initial-connection Boolean 如果首次连接主服务器失败是否失效备援连接到备份服务器 false
connection-factory.failover-on-server-shutdown Boolean 在服务器停机时是否进行失效备援 false
connection-factory.min-large-message-size Integer 大消息的最小值,大小超过该值的按大消息处理 100 * 1024
connection-factory.cache-large-message-client Boolean true表示这个连接工厂会将大消息保存在临时文件中 false
connection-factory.pre-acknowledge Boolean 是否在消息发送之前提前通知 false
connection-factory.producer-max-rate Integer 发送消息的最大速度 -1
connection-factory.producer-window-size Integer 发送者发送消息的窗口大小 1024 * 1024
connection-factory.confirmation-window-size Integer 会话恢复的确认窗口大小(字节) 1024 * 1024
connection-factory.reconnect-attempts Integer 重试的最大次数, -1 表示无限次 0
connection-factory.retry-interval Long 每次重试的时间间隔(毫秒) 2000
connection-factory.retry-interval-multiplier Double 重试间隔时间的递增系数 1.0
connection-factory.max-retry-interval Integer 最大重试间隔。 2000
connection-factory.scheduled-thread-pool-max-size Integer 可计划线程池的大小 5
connection-factory.thread-pool-max-size Integer 线程池大小 -1
connection-factory.transaction-batch-size Integer 使用事务性会话时发送通知的批量大小(字节) 1024 * 1024
connection-factory.use-global-pools Boolean 是否使用全局线程池 true
queue Queue 创建并注册到JNDI的队列
queue.name (属性) String 队列的唯一名字
queue.entry String 队列的JNDI的上下文(context)。一个队列可以有多个JNDI的上下文
queue.durable Boolean 是否持久队列 true
queue.filter String 可选的队列过滤器表达式
topic Topic 创建并注册到JNDI的话题
topic.name (属性) String 话题的唯一名
topic.entry String 话题的JNDI上下文(context)。一个话题可以有多个上下文。

4)hornetq-users.xml

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

5)jndi.properties

这个是配置JNDI服务的

6)logging.properties

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


展开阅读全文

没有更多推荐了,返回首页