JMS入门(二)Chat示例简要说明


简要说明一下昨天示例中的要素:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616
java.naming.security.principal=system
java.naming.security.credentials=manager
connectionFactory= TopicCF
topic.topic1 = jms.topic1
上面的配置提供了JMS提供者的JNDI信息
前两行分别为消息服务器的上下文工厂类和URL,用于连接到服务器。
接下来为提供者的用户名和凭证
最重要的是最后两行,分别为为应用程序设置的 TopicConnectionFactory 和 Topic,即受管对象

示例中建立连接的步骤:

1 获得JMS提供者的一个初始上下文
2 查找连接工厂
3 创建一个JMS 连接
4 创建一个JMS会话
5 查找目的地
6 启动连接

名词

我觉得Chat示例代码中的注释足够多了,API需要了解,但没什么可讲的,所以只记录一下需要弄清楚的名词:
JMS客户端:消息传送客户端
JMS提供者(JMS Provider):消息传送系统
消息生产者:生产消息的JMS客户端
消息消费者:接收消息的JMS客户端
JMS受管(JMS-administered)对象:发布/订阅主题和p2p队列,因为他们都是集中管理的,除这两个Destination外,还有个 ConnectionFactory,这些都是通过JNDI获得的,所谓的受管就是由系统管理员建立和配置的。
消息传送系统的组成:消息传送客户端、消息传送中间件

ActiveMQ

昨天的示例中,我们使用了ActiveMQ这个开源消息传送产品。继它之后还有一种新型消息传送产品ESB,他们之间存在一种关系,即ESB产品可以采用消息传送作为通信协议,他们也支持HTTP传送。
要注意一下JMS 只是一种厂商无关的Java API,它不是ActiveMQ,也不是客户端。
企业消息传送的一个关键就是异步:消息通过网络从一个系统异步传送给其他系统,这点与RPC是截然相反的。
这里,异步消息应该是自描述的,以便接受者能独立完成他们的工作。

企业消息传送系统的几种结构:

集中式体系结构
一个典型的例子就是一台集中式消息服务器连接着多个客户端,一个客户端向消息服务器发送消息,其他客户端(一个或多个)接收消息。
分散式体系结构
同集中式体系结构的最直观区别就是没有用于消息路由的服务器,因为这种结构使用了组播,将消息的发布交由网络层来完成。
混合式体系结构
昨天的示例使用了一个服务器和多个客户端,这就属于集中式体系结构,这个消息服务器也可以是一个服务器集群。


两种消息传送模型:

点对点和发布/订阅
点对点消息传送模型和发布/订阅消息传送模型重要区别是
P2p消息会被一直传送,它不会考虑接收者当前的连接状态。一旦某条消息被传送给一个队列,它就会保存在该队列中,即使当前并没有消费者连接,也是如此
发布/订阅模型是把消息复制给每个订阅者时,使用消息选择器;而点对点模型则是在已将消息添加到队列之后,再使用消息选择器
这两种模型一定要弄清楚,Chat示例就属p2p模型,下次我将准备一个点对点消息传送模型的示例

点对点消息传送模型的两种类型 :

异步即发即弃处理和异步请求/应答处理


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章