activeMQ中二种消息传递域
来源:互联网 发布:朴智妍网络剧重生 编辑:程序博客网 时间:2024/06/05 11:11
在此种方法中有createTopic()或createQueue()分别有两种方法:一是有两个参数,二是有一个参数的。两个参数分别是:建立的目的地名称和JNDI名称。一个参数的只是目的地名称,对于JNDI名称默认是:[目的地类型(topic/queue) ]/目的地名称。
在这里我们使用的是第一种方法。直接修改jbossmq-destinations-service.xml文件。
(2) 管理用户
在JMS中可能关联一个连接和一个用户,不幸的是没有明确的方法来限制访问JbossMQ或访问特殊的目的地到一个给定的用户。为了给大部分角色,在JbossMQ中不需要建立用户,除非想有一个持久topic订阅者。在这个例子中,用户是必须的。
用户可以直接在文件jbossmq-state.xml(server/../conf)中添加。同样也可以使用JMX HTML管理界面来增加(jboss.mq->service=StateManager->addUser())。
<User>
<Name>jacky</Name>
<Password>jacky</Password>
<Id>DurableSubscriberExample</Id>
</User>>
(3) 连接工厂
JBossMQ 包括为topic和queue几个不同的连接工厂,每个连接工厂有自己特性。当通过JNDI来查找一个连接工厂时,需要知道此连接工厂的名称。所有可用连接工厂和它们的属性,名称都会在文件jbossmq-service.xml中。
有三种类型连接工厂,依赖的通讯协议如下:
OIL
快速双向scoket通讯协议。它是缺省的。
UIL
超过一个socket协议,可以使用在通过防火墙访问,或者当客户端不能正确的查找到服务器的IP地址。
RMI
最早的协议,是稳定的,但是比较慢。
JVM
在JBoss 2.4之后增加的一个新的连接工厂类型。不需要用socket,当客户端和JbossMQ使用同样虚拟机时,可以使用。
在JBoss2.4.1以后版本中,对于topic- 和 queue-目的地,连接工厂使用同样的名字。下表列出了在JBoss中JMS连接工厂:
目的地类型 JNDI名字 连接工厂类型
Topic/Queue java:/ConnectionFactory JVM
Topic/Queue java:/XAConnectionFactory JVM支持XA事务
Topic/Queue RMIConnectionFactory RMI
Topic/Queue RMIXAConnectionFactory RMI支持XA事务
Topic/Queue ConnectionFactory OIL
Topic/Queue XAConnectionFactory OIL支持XA事务
Topic/Queue UILConnectionFactory UIL
Topic/Queue UILXAConnectionFactory UIL支持XA事务
3) JBoss中高级JMS配置
在上边段落主要描述了和JbossMQ一起实行的基本配置工作。在本段来描述JMS其他配置。
(1) JMS持久性管理
JMS持久性管理(PM)负责存储消息,并且将消息标记为持久,如果服务器发生故障时,能保证消息不会丢失,并允许恢复持久性消息。持久性JMS消息可以使用不同的方法来完成。每个方法有自己优点和缺陷:
PM 名字 优点 缺点
File 比较稳定 速度慢
Rollinglogged 速度比较快 此方法比较新,有些地方需要完善
JDBC 对于稳定性和可量测性比较好 必须有JDBC
Logged 速度快 Log files grow without bound, memory management problems during recovery
在JBoss中缺省的持久性消息管理是File持久性管理。可以改变它,但必须对于一个JMS
Server有且仅有一个持久性管理配置。所以你在JBoss管理界面的jboss.mq – >
service=PersistenceManager 只是看到一个。
持久性管理的配置文件是jbossmq-service.xml。在server/../deploy下。
为了让大家了解持久性管理的各种方法,我下面来逐个介绍如何配置。
w File持久性管理
File持久性管理的概念就是为每一个持久性消息建立一个文件。消息持久性方法不是全部都能使用,但它是比较稳定的。
File持久性管理在JBoss发布时,作为一个缺省的持久性管理。如果你打开jbossmq-service.xml文件,你会看到下面的XML:
<mbean code="org.jboss.mq.pm.file.PersistenceManager"
name="jboss.mq:service=PersistenceManager">
<attribute name="DataDirectory">db/jbossmq/file</attribute>
<depends optional-attribute-name="MessageCache">jboss.mq:service=MessageCache</depends>
</mbean>
当设置Mbean配置时,File持久性管理允许你指定下面的属性:
DataDircetory 是存放持久性消息的路径,会把生成的数据文件放在此目录下。
w 设置Rollinglogged持久性管理
Rollinglogged持久性管理是比较新的一种持久性消息管理方法,因为它使用日志文件来持续多个消息,所以当建立一个文件时,不需要许多的I/O。
定义Rollinglogged持久性管理:
<mbean code="org.jboss.mq.pm.rollinglogged.PersistenceManager"
name="jboss.mq:service=PersistenceManager">
<attribute name="DataDirectory">db/jbossmq/file</attribute>
<depends optional-attribute-name="MessageCache">jboss.mq:service=MessageCache</depends>
</mbean>
Rollinglogged持久性管理中DataDirctory 存放持久性消息的路径,会把生成的数据文件放在此目录下。
w 设置JDBC持久性管理
JDBC持久性管理使用数据库表来存储消息。需要一个JBoss配置的数据源来访问数据库。具体内容参考jbossmq-service.xml文件中的内容。
w 设置Logged持久性管理
Logged持久性管理是比较早的一个,在JBoss2.4.1以后版本中不在建议使用。现在有其他更好的办法。
4、举例说明
当我们清楚了以后内容后,现在我们来用JBoss实现一个例子来加深对JBoss和JMS的了解。
在上面叙述中,我们知道明确使用JMS provider有三个基本的事情要做:配置JNDI初始化上下文,连接工厂的名字和使用目的地的名字。
当编写产品的最好的事情是不受provider-specific 影响,使代码能在不同的JMS provider之间容易移植。在此这个例子没有聚焦在开发产品上,而是解释如何使用JbossMQ来工作。
1) 初始化上下文
w 配置JNDI的一个方法是通过属性文件jndi.properties。在这个文件中使用正确的值,并且把它所在的路径包含到classpath中,它比较容获得正确初始化上下文。
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
- activeMQ中二种消息传递域
- ActiveMQ In Action 第一章 消息传递和ActiveMQ简介 前言
- ActiveMQ In Action 第一章 消息传递和ActiveMQ简介 1.1 ActiveMQ 特性
- ActiveMQ In Action 第一章 消息传递和ActiveMQ简介 1.2 何时何地使用ActiveMQ
- ActiveMQ In Action 第一章 消息传递和ActiveMQ简介 1.3 开始使用ActiveMQ
- ActiveMQ - stomp 通过自定义转换器来支持 Map 消息传递
- activemq实现简单的消息传递(java 实现)
- ActiveMQ系列—使用示例(在ActiveMQ中传递Stomp消息)
- ActiveMQ In Action 第一章 消息传递和ActiveMQ简介 1.4 运行你的第一个ActiveMQ例子
- ActiveMQ消息特性:消息属性
- ActiveMQ中的消息持久性
- activemq消息中间件
- activemq 收发消息
- activemq 无法获取消息
- ActiveMQ实现消息队列
- 消息服务器ActiveMQ-5.2
- ActiveMQ 消息队列
- JMS消息服务器 ActiveMQ
- ogre中的材质脚本
- 张孝详javascript讲座笔记
- ddddd
- 如何同HR谈薪资
- SHD-60A-CT/PCI总线数字中继语音卡 and SHT-16B-CT/PCI 16线PCI接口的语音卡
- activeMQ中二种消息传递域
- socket select 结果的说明
- 调用命令行生成Visuial Studio.NET项目、解决方案 devenv
- 发布文件到linux的apache服务器
- 关于盒模型
- 基于MIPS架构的BackTrace实现
- Pku acm 2250 Compromise
- Web前端开发工程师必备技术列表-Web标准教程
- [转]用Mathematica寻找最相似的汉字