HornetQ是Jboss旗下的一个高性能、异步的并且支持多种协议的消息系统。具体的简介请参照 HornetQ官网。
本文只是针对HornetQ在Jboss中的启动和加载过程做一个简介,并没有做代码级别的深入解释。涉及的软件版本:服务器版本: jboss-eap-5.1GA,HornetQ版本:hornetq-2.1.2.Final。
按照HornetQ用户指南在Jboss中安装了HornetQ后,会在JBOSS_HOME/server/下生成default-with- hornetq和all-with-hornetq两个服务器配置。其实可以将HornetQ在boss上的安装看做是HornetQ更换了jboss默认的jms实现并将jboss-messaging替换成了HornetQ。我们以default-with-HornetQ配置为例,发现会在该配置的 deploy目录下生成hornetq.sar与hornetq-ra.rar文件夹。hornetq-ra.rar主要是关于资源适配器的设置,不做本文的重点。hornetq.sar配置的是hornetq服务的相关信息。其目录结构如下:
* hornetq-jboss-beans.xml 主要配置了HornetQ服务初始化所依赖的pojobean的相关信息,这个文件中的bean会被Jboss加载,完成Hornetq配置文件的解析,hornetq组件的启动,jms相关的jndi以及客户端的配置等。hornetq-configuration.xml HornetQ的主要配置文件。
* hornetq-jms.xml jms的配置
* login-config.xml 登陆配置
* hornetq-roles.properties 角色配置
* hornetq-users.properties 用户配置
hornetq-jboss-beans.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0">
<!-- 配置JMX服务器->
<bean name="MBeanServer" class="javax.management.MBeanServer">
<constructor factoryClass="org.jboss.mx.util.MBeanServerLocator"
factoryMethod="locateJBoss"/>
</bean>
<!-- HornetQ的核心配置 -->
<bean name="Configuration" class="org.hornetq.core.config.impl.FileConfiguration"/>
<!-- 安全管理器的配置 -->
<bean name="HornetQSecurityManager" class="org.hornetq.integration.jboss.security.JBossASSecurityManager">
<depends>JBossSecurityJNDIContextEstablishment</depends>
<!--表示加载时不启动-->
<start ignored="true"/>
<stop ignored="true"/>
<property name="allowClientLogin">false</property>
<property name="authoriseOnClientLogin">false</property>
</bean>
<!--Hornetq的核心服务器 -->
<bean name="HornetQServer" class="org.hornetq.core.server.impl.HornetQServerImpl">
<!--表示bean之间的依赖关系-->
<constructor>
<parameter>
<inject bean="Configuration"/>
</parameter>
<parameter>
<inject bean="MBeanServer"/>
</parameter>
<parameter>
<inject bean="HornetQSecurityManager"/>
</parameter>
</constructor>
<!--表示加载时不启动-->
<start ignored="true"/>
<stop ignored="true"/>
</bean>
<!-- JMS 服务器 -->
<bean name="JMSServerManager" class="org.hornetq.jms.server.impl.JMSServerManagerImpl">
<constructor>
<parameter>
<inject bean="HornetQServer"/>
</parameter>
</constructor>
</bean>
<!-- POJO which ensures HornetQ Resource Adapter is stopped before HornetQServer -->
<!-- -->
<!-- update the RA object name if you rename hornetq-ra.rar to jms-ra.rar -->
<bean name="HornetQRAService" class="org.hornetq.ra.HornetQRAService">
<constructor>
<parameter>
<inject bean="MBeanServer"/>
</parameter>
<parameter>jboss.jca:name='hornetq-ra.rar',service=RARDeployment</parameter>
</constructor>
<depends>HornetQServer</depends>
</bean>
</deployment>
由上面的配置可以看出,Hornetq最终启动是由 org.hornetq.jms.server.impl.JMSServerManagerImpl类触发,该类初始化的过程中会触发HornetQ的核心服务器的初始化,使HornetQ的各个组件都处于运行的状态,例如Acceptor监听各自的端口和服务。
由上图可以看出JMSServerManagerImpl负责调用HornetQ Server的初始化工作,hornetQ会根据自己是不是主备来决定要不要是JMS的相关队列和工厂对外提供服务。
那么备机什么时候会初始化JMS server呢?答案是在主机宕机的情况下,当客户端连接到备机的时候才会调用JMSServerManagerImpl的actived(),而是备机激活JMS服务。
- 大小: 13.7 KB
- 大小: 24.1 KB
分享到:
相关推荐
### HornetQ官方学习资料知识点概述 #### 一、HornetQ简介 HornetQ是一款由JBoss开发并维护的消息中间件,它具备高度的可扩展性和灵活性,能够支持集群部署以及多种消息传递协议。HornetQ不仅完全支持JMS(Java ...
- 初始化ConnectionFactory。 - 创建Connection,并基于此创建Session。 - 创建目的地(Queue或Topic)。 - 创建Producer,用于发送消息。 - 创建Consumer,用于接收消息。 - 发送和接收消息。 - 关闭连接和...
- **持久性(DURABILITY)**:解释如何通过持久化消息来防止数据丢失,即使在系统故障后也能恢复。 - **消息 API 和协议**:涵盖 HornetQ 支持的编程接口,如 JMS (Java Message Service) API,以及使用的网络协议...
HornetQ是JBoss社区所研发的开放源代码消息中间件;HornetQ是以Java 5 编写,因此只需要操作系统支持Java虚拟机,HornetQ便可运行。 支持Java消息服务 (JMS) 1.1 版本 集群 (Clustering) 支持庞大的消息(Message)...
HornetQ 2.3.0 Alpha 发布,这不是一个简单的 Alpha 版本,同时也是一个大的发行版本。该版本对 2.2.0 进行了重构,引入一些原子故障迁移特性和大量企业特性改进。详细的新特性介绍请看发行说明。 HornetQ是一个...
### HornetQ2.1中文手册关键知识点解析 #### 一、消息的相关概念 HornetQ2.1中文手册中详细介绍了消息处理系统的基本概念和技术细节,这对于理解和使用HornetQ至关重要。 ##### 4.1 消息相关的概念 - **消息**:在...
Hermes则是一款图形化工具,专门用于监控和管理JMS服务器,如HornetQ,它提供了友好的用户界面来查看、发送和接收消息。 **Hermes监听HornetQ JMS配置步骤详解:** 1. **Hermes安装路径要求**: - Hermes的安装...
通过编辑`configuration/hornetq.config.xml`,可以定制HornetQ的行为,如设置持久化存储、集群配置、传输协议、安全策略等。 **5. 使用HornetQ** 开发者可以通过JMS API创建生产者和消费者,与HornetQ服务器进行...
3. **持久化机制**:HornetQ提供了强大的消息持久化能力,即使在服务器宕机后,也能确保消息不丢失。这通过将消息存储到磁盘上实现,恢复时可以从持久化存储中重新加载消息。 4. **集群与高可用性**:HornetQ支持...
### ActiveMQ与HornetQ性能对比分析 #### 概述 本文旨在通过一系列测试数据对比分析ActiveMQ与HornetQ在不同消息大小及数量下的性能表现。测试环境为相同的硬件配置,确保了测试结果的公正性。通过对比两者的发送...
.NET 连接HornetQ是一项关键的技术任务,HornetQ是一款开源的消息中间件,它提供了高效、可扩展和高可用性的消息传递服务。在.NET环境中与HornetQ进行交互,通常需要借助特定的客户端库,如Apache.NMS.Stomp。下面将...
4. **持久化与事务**:讨论消息的持久化机制,以及如何在HornetQ中使用JMS事务。 5. **集群与高可用性**:介绍如何配置HornetQ集群,实现消息的负载均衡和故障转移。 6. **安全性**:详细阐述HornetQ的安全配置,...
hornetq安装包, hornetq-2.4.0.Final-bin.tar 消息中间件 供项目中数据交互使用
hornetq-2.2.5.Final.ziphornetq-2.2.5.Final.ziphornetq-2.2.5.Final.ziphornetq-2.2.5.Final.ziphornetq-2.2.5.Final.ziphornetq-2.2.5.Final.ziphornetq-2.2.5.Final.zip
HornetQ是一款高性能、可伸缩且开源的消息中间件,它被广泛用于构建分布式系统中的消息传递。在HornetQ中,集群配置是一种重要的特性,它允许多个HornetQ服务器形成一个集群,共享资源,提高可用性和可扩展性。本篇...
1. **HornetQ Journal**: HornetQ Journal是HornetQ消息服务器的重要组成部分,它负责存储和持久化消息。Journal提供了高可用性和故障恢复能力,即使在服务器崩溃或硬件故障后,也能确保消息不丢失。通过将消息数据...
hornetq-transports-2.0.0.GA.jar
HornetQ是java开源实现的消息系统框架,性能上比ActiveQ要好一些,被集成到JBoss的消息服务中。 Table of Contents Preface 1 Chapter 1: Getting Started with HornetQ 9 Chapter 2: Setting Up HornetQ 31 ...
不但对非持久化消息的处理性能达到了非常高的性能。独特高效的日志(journal)使持久消息处理接近非持久消息的性能。 * 功能全面。不仅拥有其它成熟消息产品所具有的全部功能,而且还有很多独特的功能。 * ...
而Hermes则是一个开源的JMS管理工具,它提供了图形化的界面来管理和监控JMS服务器,包括HornetQ。 本文将详细介绍如何使用Hermes监听HornetQ的JMS配置,以便更好地管理和调试基于JMS的消息传递系统。 首先,要开始...