好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

即时聊天技术实现方案

即时聊天技术实现方案 本文关键词:即时,聊天,方案,技术

即时聊天技术实现方案 本文简介:即时聊天技术实现方案炎炎互动数码科技有限公司蔡鑫即时聊天技术实现方案编写:蔡鑫日期:2012年10月12日ActiveMQ简介1.什么是ActiveMQActiveMQ是Apache出品,最流行的,能力强劲的开源消息中间件,应用中引入中间件的好处是减少服务器之间的依赖关系,提高扩展性,在没有引入消息

即时聊天技术实现方案 本文内容:

即时聊天技术实现方案

炎炎互动数码科技有限公司

蔡鑫

即时聊天技术实现方案

编写:

蔡鑫

日期:

2012年10月12日

ActiveMQ

简介

1.

什么是ActiveMQ

ActiveMQ

是Apache出品,最流行的,能力强劲的开源消息中间件,应用中引入中间件的好处是减少服务器之间的依赖关系,提高扩展性,在没有引入消息中间件的情况可能出现如下:

出现服务器多依赖的情况,不方面扩展,而引入消息中间件后如

从图中可以看出引入消息中间件后,每个服务器只依赖于消息中间件,而且在应用中这种依赖关系式一种弱依赖关系

2.

ActiveMQ

的松耦合介绍

松耦合应用在分布式应用设计中更具优势;也是对分布式应用至关重要的。

3.

ActiveMQ

的特性

n

多种语言和协议编写客户端。语言:

Java、C、C++、C#、Ruby、Perl、Python、PHP。应用协议:OpenWire、Stomp

REST、WS

Notification、XMPP、AMQP

n

完全支持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

在http://activemq.apache.org/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:http://127.0.0.1:8161/admin/

demo:http://127.0.0.1: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

中的概念

2

JMS客户端:接收或发送消息的java系统

2

JMS消息体:系统间发送的消息体

2

JMS提供商:JMS规范实现厂商

2

JMS管理对象:预先配置好的用于JMS客户端的JMS对象。如ConnectionFactory跟JMS服务端的连接工厂,Destination

接收和发送消息的目标地址等

2

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

接口

描述

ConnectionFactory

QueueConnectionFactory

TopicConnectionFactory

创建与JMS服务的连接

Connection

QueueConnection

TopicConnection

JMS服务的连接,可创建Session

Destination

Queue

Topic

发送接收消息的目标,Queue和Topic均可视为一种Destination

Session

QueueSession

TopicSession

Session

MessageProducer

QueueSender

TopicPublisher

消息发送者

MessageConsumer

QueueReceiver、QueueBrowser

TopicSubscriber

消息接收者/浏览者/订阅者

14.

JMS

接口关系图

15.

聊天室主要功能

1.

创建房间。

2.

进入房间。

3.

多人即时聊天。

4.

发送文字。

TAG标签: