Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1501973
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 23:26:29

一起学习

RabitMQ是一个开源的企业消息传递系统:

RabitMQ是一个完整的、高可靠的企业消息传递系统。RabbitMQ客户端类库及后台程序(broker daemon)可一起被用于创建一个AMQP网络,或者单独使用它们以便给建立起来的网络带来RabbitMQ的好处。

RabitMQ是AMQP协议的实现,该协议是消息传递中间件的一个开放标准。STOMP则是面向流文本的消息传递协议。Wischusen所尝试的是去利用RabbitMQ的STOMP适配器。

为了使读者理解该试验是如何工作的,Wischusen给我们共享了相应的资源和源代码:

    • 按照其指南所示步骤,让带有STOMP适配器的RabbitMQ来运行。
    • 下载Flex例子应用的项目文件。

接下来,Wischusen解释了这个Flex例子项目到底实现了什么:

该项目有两个单独的应用组成:ImageSender和ImageReceiver。该项目文件也包含了已编译的as3-stomp类库,这样你就无需单独下载它了。

ImageSender和ImageReceiver应用将通过STOMP协议使用RabbitMQ交换消息来进行通讯。为了证明来自两个应用的Flex代码是如何与STOMP客户端一起工作的,Wischusen分享了这一代码片断。

在ImageSender方面:

"stomp"  />
...

privatefunctioninit () :void
{
varch: ConnectHeaders =newConnectHeaders();
ch.login ="guest";
ch.passcode ="guest"
stomp.connect("localhost", 61613, ch);
}
...
privatefunctionsendImage():void
{
varimage: ByteArray = ImageSnapshot.captureImage(canvas).data;
stomp.send(destination, image);
}

在ImageReceiver方面:

"stomp" message="handleMessages(event)"/>
...
privatevardestination: String ="/queue/images";

privatefunctioninit () :void
{
varch: ConnectHeaders =newConnectHeaders();
ch.login ="guest";
ch.passcode ="guest"
stomp.connect("localhost", 61613, ch);
stomp.subscribe( destination );
}
...

privatefunctionhandleMessages(event: MessageEvent) :void
{
varbd: BitmapData =newBitmapData(canvas.width, canvas.height);
varloader : flash.display.Loader =newflash.display.Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onBytesLoaded);
loader.loadBytes(event.message.body);
functiononBytesLoaded (event: Event) :void
{
varcontent : DisplayObject = LoaderInfo(event.target ).content;
bd.draw( content );
canvas.graphics.beginBitmapFill(bd);
canvas.graphics.drawRect(0,0, canvas.width, canvas.height);
canvas.graphics.endFill();
}
}

该试验示范了一个图像是如何从Flex应用端(ImageSender)被捕获的,该图像怎么被发送至RabbitMQ服务器,消息如何被发送到消息消费者应用(ImageReceiver),以及这个消息怎样触发了一个事件而从RabbitMQ服务器装载这个图像。这是面向消息的RIA应用概念的 一个有趣的演示。

下载本文示例代码


用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ用STOMP集成Flex3.0和RabbitMQ
阅读(388) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~