即时聊天技术实现方案.docx_第1页
即时聊天技术实现方案.docx_第2页
即时聊天技术实现方案.docx_第3页
即时聊天技术实现方案.docx_第4页
即时聊天技术实现方案.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

即时聊天技术实现方案 炎炎互动数码科技有限公司 蔡鑫即时聊天技术实现方案 编写: 蔡鑫 日期: 2012年10月12日ActiveMQ 简介1. 什么是ActiveMQActiveMQ 是Apache出品,最流行的,能力强劲的开源消息中间件, 应用中引入中间件的好处是减少服务器之间的依赖关系,提高扩展性,在没有引入消息中间件的情况可能出现如下:出现服务器多依赖的情况,不方面扩展,而引入消息中间件后如从图中可以看出引入消息中间件后,每个服务器只依赖于消息中间件,而且在应用中这种依赖关系式一种弱依赖关系2. ActiveMQ 的松耦合介绍松耦合应用在分布式应用设计中更具优势;也是对分布式应用至关重要的。3. ActiveMQ 的特性n 多种语言和协议编写客户端。语言: Java、C、C+、C#、Ruby、Perl、Python、PHP。应用协议:OpenWire、Stomp REST、WS Notification、XMPP、AMQPn 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务) n 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性 n 通过了常见J2EE服务器(如 Geronimo、JBoss 4、GlassFish、WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上 n 支持多种传送协议:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA n 支持通过JDBC和journal提供高速的消息持久化 n 从设计上保证了高性能的集群,客户端-服务器,点对点n 支持Ajax n 支持与Axis的整合n 可以很容易得调用内嵌JMS provider,进行测试ActiveMQ 安装和下载4. 安装n 在/download.html 下载5.4.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。 n unix环境activemq文件夹需要执行权限,执行如下命令 chmod -R 755 /path/to/activemq 5. 启动n window环境运行/path/to/activemq/bin/activemq.bat n unix环境运行/path/to/activemq/bin/activemq 6. 测试ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动n window环境运行 netstat -an|find 61616 n unix环境运行netstat -an|grep 61616 7. 监控ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。admin::8161/admin/ demo::8161/demo/ActiveMQ基础实例8. 消息生产者/通过 用户密码URL 创建接口工厂ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,tcp:/localhost:61616);/通过连接工厂创建一个新的连接Connection connection = factory.createConnection();/通过连接接口创建一个回话Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);/根据回话接口创建有关的目标接口Destination destination = session.createQueue(Mr Yan);/回话接口再根据目标接口创建一个消息生产者接口MessageProducer messageProducer = session.createProducer(destination);/调用回话创建一个文本消息Message message = session.createTextMessage(I am very happy either.);/使用消息生产者接口将消息传送至 ActiveMQ 服务器messageProducer.send(message);session.close();connection.close();9. 消息消费者/ 通过username,password,url创建连接工厂接口ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,tcp:/localhost:61616);/ 通过连接工厂创建一个新的连接接口Connection connection = factory.createConnection();connection.start();/ 通过连接接口创建一个会话接口Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);/ 会话接口创建有关主题的目标接口Destination destination = session.createQueue(Mr Liu);/ 会话接口再根据目标接口来创建一个消息消费者接口MessageConsumer consumer = session.createConsumer(destination);/ 消息消费者接收消息TextMessage message = (TextMessage)consumer.receive();if (message != null) System.out.println(收到的消息: + message.getText();session.close();connection.close();10. 消息发送流程然后调用发布接口发布消息,发布过程如下:11. 消息接收流程JMS 简介12. JMS 中的概念 JMS客户端:接收或发送消息的java系统 JMS消息体:系统间发送的消息体 JMS提供商:JMS规范实现厂商 JMS管理对象:预先配置好的用于JMS客户端的JMS对象。如ConnectionFactory跟JMS服务端的连接工厂,Destination 接收和发送消息的目标地址等 JMS Domain:JMS定义了两种域模型,一种是PTP(point-to-point)即点对点消息传输模型,一种是pub/sub(publish-subscribe)即发布订阅模型。 PTP通过一个先进先出的queue实现。很多人在这个PTP概念上有所误解,所谓点对点不是指生产者和消费者只有一个。PTP如下图所示: 我们可以看到,一个或多个生产者发送消息,消息m2先抵达了queue,然后m1也发出了,并一同存在于一个先进先出的queue里面。消费者也存在一个或多个,对queue里的消息进行消费。但消息被随机的一个消费者消费且仅消费一次。 在pub/sub消息模型中,消息被广播给所有订阅者。如下图: 13. JMS 接口JMS通用接口JMS PTP接口JMS pub/sub 接口描述ConnectionFactoryQueueConnectionFactoryTopicConnectionFactory创建与JMS服务的连接ConnectionQueueConnectionTopicConnectionJMS服务的连接,可创建SessionDestinationQueueTopic发送接收消息的目标,Queue和Topic均可视为一种DestinationSessionQueueSessionTopicSes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论