- 浏览: 43004 次
- 性别:
- 来自: 深圳
最新评论
-
liguirong98:
真的没有了?
4.3通过网络连接ActiveMQ(一) -
a2623567z:
请问高手,后面还有吗。我真的想知道。如果一台机要连接到另外一台 ...
4.3通过网络连接ActiveMQ(一) -
maishj:
怎么没继续了啊
4.3通过网络连接ActiveMQ(一) -
JFires:
1927105 写道请问LZ这图是用什么软件画出来,感觉效果不 ...
2.4JMS规范(五) -
1927105:
请问LZ这图是用什么软件画出来,感觉效果不错。
2.4JMS规范(五)
文章列表
4.3通过网络连接ActiveMQ
ActiveMQ最常用的场景是将它作为一个Java应用来使用。这意味着客户端(生产者和消费者)必须使用一些网络协议来连接代理器目标。在这一节,我们将介绍那些可以用在客户端-代理器交互场景中的网络协 ...
4.2传输连接器
为了交换信息,生产者和消费者必须连接到代理器。客户端到代理器的连接是通过传输连接器来实现的。ActiveMQ提供了一些客户端协议,可以用来交换信息。ActiveMQ用户对连接的要求是多种多样的。一些用户关注 ...
第二部分:配置标准ActiveMQ组件
使用ActiveMQ看起来很简单直接:启动它,发送消息,接收消息。但是你没有看到隐藏在这些步骤后面的细节。理解这些细节和自定义配置需要更多的例子来说明。虽然ActiveMQ提供了大量的配置选项 ...
3.3用例二:工作队列
第二个例子通过工作队列来演示点对点的消息传送。这个例子使用Producer类来向工作队列发送消息,而注册了Listener的Consumer类则用异步的方式从队列消费消息。这3个类展示了基本的JMS点对点消息传送是如何工作的。这些类和上一个例子很相似,区别就是用在不同的消息传送领域。
Producer类发送消息到JOBS.suspend和JOBS.delete队列,Consumer则消费它们。图3.3在一个高层次描述了这个过程。
Producer使用一个单独的MessageProducer来发送1000条工作消息,每次10条,随机地发送到两 ...
3.2用例一:股票投资例子
就像之前提到的,我们第一个用例是使用股票投资的例子来展示发布/订阅的消息传送机制。这个例子使用一个Publisher类来发送一条股票价格消息到一个主题,同时,注册了Listener的Consumer类用异步方式 ...
第三章:ActiveMQ例子
本章内容
介绍本书每一个示例
使用Maven来编译和运行这些例子
怎样使用这些例子与ActiveMQ进行交互
ActiveMQ提供JMS规范要求的所有特性并且在这之上,提供了很多有用的特性。这些都在图3.1里描绘出来, ...
2.5.2 消息驱动beans
消息驱动beans(Message-driven beans)在EJB2.0规范的时候诞生。该组件产生的动机是让EJB能够与JMS简单集成,使得EJB异步消息消费和使用标准JMS APIs一样简单。通过使用MessageListener接口,EJB通过消息推送自动从JMS提供者那里接收消息。一个MDB例子如下。
Listing 2.11 A simple message-driven bean example
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
impo ...
2.5使用JMS API创建JMS应用
因不同的商业要求,创建一个JMS应用可以很简单也可以很复杂。就像JDBC,JNDI,EJBs等API,抽象JMS API,使得JMS代码和商业逻辑相分离是必须的。这个概念不会在这里讨论,因为这要涉及到模式和应用架构,不是一两句话可以说完的。下面是一些简单的例子,它们向你展示了一个最基本的JMS APIs的使用,
2.5.1 一个简单的JMS应用
一个JMS应用使用Java语言编写的,它组合了各个部分来和JMS一起工作。这些部分在2.3节已经讨论过。一个简单的JMS应用会下面的步骤:
请求一个JMS连接工i厂。
是用连 ...
2.4.7 JMS领域
就像之前提到的,JMS是团队成果,这个团队就包括了消息传送实现的提供商。JMS定义了两种类型的消息传送,这是由现有的消息传送实现决定的。这两种风格(也叫做领域domains)是point-to-point及publish/subscribe。 ...
2.4.6消息选择器
很多时候,一个JMS客户端订阅了一个目标,但是它只想接收特定类型的消息。这种情况,消息头部和属性正好派上用场。例如,一个消费者到一个队列注册,希望接收到特定股票的消息。只要该消息包含一个股票标识的属性,那么这个功能就很容易实现。JMS客户端可以用消息选择器告诉JMS提供者它要接收某个属性值符合要求的消息。
许多选择器允许JMS客户端基于消息头部的值指定它要接收到消息。选择器使用SQL92子集的条件表达式。消息选择器使用消息头部和属性值来进行布尔计算。不符合的消息将不会投递到客户端。消息选择器不能作用于消息体。
条件表达式作为字符串参数传递给 ...
JMS提供者可选头部
JMSRedelivered----用来指出一条消息被投递但没有收到应答的情况。这种情况可能是消费者应答失败,或者JMS提供者没有被通知到(例如异常发生使得应答消息没有到达JMS提供者)。
JMS消息属性
属性是消息的一些简单的额外的头部。JMS提供通用的方法来设置自定义头部。这些通用方法提供对各种Java原始类型的支持,包括Boolean,byte,short,int,long,float,double及String对象。详情请看下面Message接口方法清单:
Listing 2.3 The JMS Message interface
pu ...
2.4.5 JMS消息内部
就像上面提到的,JMS消息复杂部分在它的头部。有两种头部,它们都是基于相同的逻辑概念,但是有很大的不同。除了一系列标准的头部和方法,还有properties方法。poperties是基于Java类型,用来处理自定义 ...
2.4 JMS规范
就像前面提到的,JMS规范定义了两种客户端--JMS客户端和非JMS客户端。它们之间的区别必须简单讨论下。
2.4.1 JMS客户端
JMS客户端使用JMS API与JMS提供者交互。就像使用JDBC API去访问关系数据库一样,JMS客户端使用JMS API作为消息驱动服务的标准访问方式。许多JMS提供者(包括ActiveMQ)包含了很多超出JMS规范要求的特性。值得一提的是一个100%JMS客户端只能使用JMS提供的API,必须避免使用额外的特性。不过一般选择哪个JMS provider通常是由它提供的额外特性决定的。所以,一个使用了额 ...
2.3什么是Java消息服务
JMS是在MOM供应商核心API基础上发展的,它用来提供企业消息传送。JMS的目标是为Java提供一个标准的API来发送和接收消息,并使之成为供应商天生行为。JMS最小化了Java程序员开发企业消息应用的复杂性,同时还保留在不同JMS提供者之间移植的可能性。
JMS并不是一个MOM。它是一个API,抽象了客户端和MOM的交互,就像JDBC抽象与数据库的交互一样。图2.4展示了客户端是如何通过JMS提供的API和特定JMS提供者交互。特定的JMS提供者使用供应商制定的API和MOM交互。不只是图示的四种,对于其它JMS提供者也是相同的。
...
2.2什么是面向消息中间件
面向消息中间件(MOM)为分布式系统提供异步,解耦,稳定,可扩展和安全的行为。MOM在分布式计算领域是一个重要的概念。它允许应用使用代理器API在分布式环境实现各种功能。
总之,MOM的设计原理就是作为消息发送者和接收者的中间人使用。这个中间人提供了一个高级别的解耦。图2.3演示了ActiveMQ作为中间人,不只是可以联系应用和大型机,还可以实现应用间的交互。
在一个较高级别看,消息就是一个商业信息单元,它通过MOM从一个应用发送到另一个应用。应用使用目标(destinations)来发送和接收消息。
消息将被投递到destinati ...