- 浏览: 547732 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (740)
- css (4)
- jquery (8)
- javascript (23)
- html (0)
- uml (0)
- 设计模式 (1)
- 开发工具 (14)
- json (4)
- struts 1.x (3)
- spring (3)
- hibernate (6)
- struts 2.x (17)
- JFreechart (0)
- j2se (48)
- jsp (9)
- flex (22)
- 找工作 (1)
- 技术杂谈 (18)
- 网络编程 (5)
- io流 (1)
- ORACLE (15)
- 报表 (3)
- extjs (11)
- jpbm (2)
- swing (5)
- jspereports (3)
- sql (1)
- linux (15)
- ps (1)
- storm (4)
- hbase (8)
- li (0)
- python (1)
- hive (3)
- 机器学习 (1)
- hdfs (1)
- elasticsearch (1)
- hadoop 2.2 (5)
- hadoop (1)
最新评论
-
Tristan_S:
这个有点意思
ASM -
starryskydog:
程序修改detail band部分的样式 如内容字体大小 ...
使用jasperReport实现动态表头 -
samwong:
Good, so usefule
使用YUI Compressor压缩CSS/JS -
gc715409742:
能够告诉我怎么在web项目中使用YUI Compressor? ...
使用YUI Compressor压缩CSS/JS -
JsonTeye:
您好! 我看你的代码,我现在也在做动态报表,实现功能由用户自己 ...
使用jasperreport动态生成pdf,excel,html
Producer Consumer实例
在上一篇文章(blazeds学习笔记四 Producer Consumer讲解)我们粗略了解一下在Flex里Message通讯中Producer组件和Consumer组 件的简单理论知识,这篇文章中让我们一起来看一个简单的实例,看看Producer组件和Consumer组件的具体使用!
上代码,大部分都在注释中解释的很清楚了!!!(如果哪里讲的不清楚或者有错误,欢迎与我们沟通交流!)
ChatRoom.mxml
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” creationComplete=”initChatRoom()” layout=”absolute”>
<mx:Script>
<![CDATA[
//导入相应的类
import mx.controls.Alert;
import mx.messaging.messages.AsyncMessage;
import mx.messaging.events.MessageEvent;
import mx.messaging.events.MessageAckEvent;
import mx.messaging.events.MessageFaultEvent;
import mx.rpc.Fault;
import mx.messaging.messages.AcknowledgeMessage;
import mx.messaging.Consumer;
import mx.messaging.Producer;
//声明Producer和Consumer
private var producor:Producer;
private var consumer:Consumer;
//程序在creationComplete后自动调用
private function initChatRoom():void
{
initProducer();
initConsumer();
//为“发送”按钮的单击事件注册处理函数
sendBtn.addEventListener(MouseEvent.CLICK,sendBtnHandler);
}
//初始化一个Producer用来发送消息
private function initProducer():void
{
//实例化一个Producer用于发送消息
producor = new Producer();
//设置消息服务的目标,应与messaging-config.xml文件中的destination条目id相匹配
producor.destination = "chatRoom";
//为acknowledge事件注册监听函数,当收到已发送消息的确认结果时触发该事件
producor.addEventListener(MessageAckEvent.ACKNOWLEDGE,ackMessageHandler);
//为fault事件注册监听函数,当发生消息错误时调度fault事件
producor.addEventListener(MessageFaultEvent.FAULT,faultMessageHandler);
//使用的远程目标的子主题
producor.subtopic = "topic";
}
//初始化一个Consumer用来订阅、接受消息
private function initConsumer():void
{
//实例化一个Consumer用于订阅和接收消息
consumer = new Consumer();
//设置消息服务的目标,该值应与messaging-config.xml文件中的destination条目id相匹配。
consumer.destination = "chatRoom";
//为message事件注册监听函数,当Consumer接收到消息时调度
consumer.addEventListener(MessageEvent.MESSAGE,messageHandler);
//使用的远程目标的子主题
consumer.subtopic = "topic";
//订阅远程目标
consumer.subscribe();
}
//acknowledge事件处理方法,消息发送成功调用该方法
private function ackMessageHandler(event:MessageAckEvent):void
{
trace("消息发送成功...");
}
//fault事件处理方法,消息发送失败将调用该方法
private function faultMessageHandler(event:MessageFaultEvent):void
{
Alert.show("信息发送失败","提示");
}
//message事件处理方法
private function messageHandler(event:MessageEvent):void
{
output.text += event.message.headers.nickName + " 说: " + event.message.body.content + "\n";
}
//点击“发送”按钮执行该方法
private function sendBtnHandler(event:MouseEvent = null):void
{
//实例化一个AsyncMessage用于接收creatMessage()方法返回的AsyncMessage实例
var asyncMessage:AsyncMessage = creatMessage();
//用producor的send方法发送一条消息
producor.send(asyncMessage);
//将输入框清空
input.text = "";
//调用setChatRoomFocus()方法设置程序的焦点
setChatRoomFocus();
}
//创建一条消息并返回该消息
private function creatMessage():AsyncMessage
{
//声明并实例化一个AsyncMessage实例asyncMessage
var asyncMessage:AsyncMessage = new AsyncMessage();
//在asyncMessage的headers中添加信息
asyncMessage.headers.nickName = "nirvana";
//在asyncMessage的body中添加信息
asyncMessage.body.content = input.text;
//返回AsyncMessage实例asyncMessage
return asyncMessage;
}
//设置焦点
private function setChatRoomFocus():void
{
//设置application的焦点
application.focusManager.setFocus(input);
}
]]>
</mx:Script>
<mx:TextArea id=”output” x=”0″ y=”0″ width=”462″ height=”300″ editable=”false”/>
<mx:TextArea id=”input” x=”0″ y=”308″ width=”406″ height=”48″/>
<mx:Button id=”sendBtn” label=”发送” width=”48″ x=”414″ y=”308″ height=”48″/>
</mx:Application>
messaging-config.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<service id=”message-service” >
<adapters>
<adapter-definition id=”actionscript” default=”true” />
<!– <adapter-definition id=”jms”/> –>
</adapters>
<default-channels>
<channel ref=”my-polling-amf”/>
</default-channels>
<destination id=”chatRoom”>
<properties>
<network>
<subscription-timeout-minutes>0</subscription-timeout-minutes>
</network>
<server>
<message-time-to-live>0</message-time-to-live>
<allow-subtopics>true</allow-subtopics>
<subtopic-separator>.</subtopic-separator>
</server>
</properties>
<channels>
<channel ref=”my-amf”/>
</channels>
</destination>
</service>
在上一篇文章(blazeds学习笔记四 Producer Consumer讲解)我们粗略了解一下在Flex里Message通讯中Producer组件和Consumer组 件的简单理论知识,这篇文章中让我们一起来看一个简单的实例,看看Producer组件和Consumer组件的具体使用!
上代码,大部分都在注释中解释的很清楚了!!!(如果哪里讲的不清楚或者有错误,欢迎与我们沟通交流!)
ChatRoom.mxml
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” creationComplete=”initChatRoom()” layout=”absolute”>
<mx:Script>
<![CDATA[
//导入相应的类
import mx.controls.Alert;
import mx.messaging.messages.AsyncMessage;
import mx.messaging.events.MessageEvent;
import mx.messaging.events.MessageAckEvent;
import mx.messaging.events.MessageFaultEvent;
import mx.rpc.Fault;
import mx.messaging.messages.AcknowledgeMessage;
import mx.messaging.Consumer;
import mx.messaging.Producer;
//声明Producer和Consumer
private var producor:Producer;
private var consumer:Consumer;
//程序在creationComplete后自动调用
private function initChatRoom():void
{
initProducer();
initConsumer();
//为“发送”按钮的单击事件注册处理函数
sendBtn.addEventListener(MouseEvent.CLICK,sendBtnHandler);
}
//初始化一个Producer用来发送消息
private function initProducer():void
{
//实例化一个Producer用于发送消息
producor = new Producer();
//设置消息服务的目标,应与messaging-config.xml文件中的destination条目id相匹配
producor.destination = "chatRoom";
//为acknowledge事件注册监听函数,当收到已发送消息的确认结果时触发该事件
producor.addEventListener(MessageAckEvent.ACKNOWLEDGE,ackMessageHandler);
//为fault事件注册监听函数,当发生消息错误时调度fault事件
producor.addEventListener(MessageFaultEvent.FAULT,faultMessageHandler);
//使用的远程目标的子主题
producor.subtopic = "topic";
}
//初始化一个Consumer用来订阅、接受消息
private function initConsumer():void
{
//实例化一个Consumer用于订阅和接收消息
consumer = new Consumer();
//设置消息服务的目标,该值应与messaging-config.xml文件中的destination条目id相匹配。
consumer.destination = "chatRoom";
//为message事件注册监听函数,当Consumer接收到消息时调度
consumer.addEventListener(MessageEvent.MESSAGE,messageHandler);
//使用的远程目标的子主题
consumer.subtopic = "topic";
//订阅远程目标
consumer.subscribe();
}
//acknowledge事件处理方法,消息发送成功调用该方法
private function ackMessageHandler(event:MessageAckEvent):void
{
trace("消息发送成功...");
}
//fault事件处理方法,消息发送失败将调用该方法
private function faultMessageHandler(event:MessageFaultEvent):void
{
Alert.show("信息发送失败","提示");
}
//message事件处理方法
private function messageHandler(event:MessageEvent):void
{
output.text += event.message.headers.nickName + " 说: " + event.message.body.content + "\n";
}
//点击“发送”按钮执行该方法
private function sendBtnHandler(event:MouseEvent = null):void
{
//实例化一个AsyncMessage用于接收creatMessage()方法返回的AsyncMessage实例
var asyncMessage:AsyncMessage = creatMessage();
//用producor的send方法发送一条消息
producor.send(asyncMessage);
//将输入框清空
input.text = "";
//调用setChatRoomFocus()方法设置程序的焦点
setChatRoomFocus();
}
//创建一条消息并返回该消息
private function creatMessage():AsyncMessage
{
//声明并实例化一个AsyncMessage实例asyncMessage
var asyncMessage:AsyncMessage = new AsyncMessage();
//在asyncMessage的headers中添加信息
asyncMessage.headers.nickName = "nirvana";
//在asyncMessage的body中添加信息
asyncMessage.body.content = input.text;
//返回AsyncMessage实例asyncMessage
return asyncMessage;
}
//设置焦点
private function setChatRoomFocus():void
{
//设置application的焦点
application.focusManager.setFocus(input);
}
]]>
</mx:Script>
<mx:TextArea id=”output” x=”0″ y=”0″ width=”462″ height=”300″ editable=”false”/>
<mx:TextArea id=”input” x=”0″ y=”308″ width=”406″ height=”48″/>
<mx:Button id=”sendBtn” label=”发送” width=”48″ x=”414″ y=”308″ height=”48″/>
</mx:Application>
messaging-config.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<service id=”message-service” >
<adapters>
<adapter-definition id=”actionscript” default=”true” />
<!– <adapter-definition id=”jms”/> –>
</adapters>
<default-channels>
<channel ref=”my-polling-amf”/>
</default-channels>
<destination id=”chatRoom”>
<properties>
<network>
<subscription-timeout-minutes>0</subscription-timeout-minutes>
</network>
<server>
<message-time-to-live>0</message-time-to-live>
<allow-subtopics>true</allow-subtopics>
<subtopic-separator>.</subtopic-separator>
</server>
</properties>
<channels>
<channel ref=”my-amf”/>
</channels>
</destination>
</service>
发表评论
-
(原创)flex(AIR)远程文件下载实例(高级版)
2012-01-12 23:36 1128<?xml version="1.0 ... -
关于Flex安全沙箱问题的解决
2012-01-12 11:10 1013关于Flex安全沙箱问题的解决 前些天做了一个 ... -
flex as自定义组件
2012-01-10 10:20 1195Flex 3入门教程: 在Act ... -
flex上传和下载文件
2012-01-09 15:45 1134FileIO 示例说明了在 Flash Player 中执 ... -
flex通信篇——flash与js
2012-01-08 16:14 1444Flex与JS交互推荐用ExternalInterface,它 ... -
[心得教程] Flex与 JS 交互通信方法
2012-01-08 16:07 1386心得教程类型: navigateToURL( ... -
Flex中的文件上传与下载
2012-01-08 14:01 1299和传统的JSP一样,在 ... -
FileReference+HttpHandler实现文件上传/下载
2012-01-08 13:25 1238在Flex的应用开发中,同ASP.NET,JSP ... -
Flex保存文件 FileReference.save(data,filename)
2012-01-08 13:14 2467一、save() 方法简介save()这个方 ... -
关于flex 4的新数据类型中英文对照
2010-08-31 08:34 965Flex 4 new data type:ArrayList ... -
Flex程序与html通信方法大全
2010-08-29 09:30 1073Flex通常作为一个web项目的一部分嵌入到一个web页中,因 ... -
flex图文混排
2010-08-29 09:29 2813由于我们项目需要在flex中实现图文混排的效果,在实现的过程中 ... -
mx:Module mx:XML mx:XMLList mx:XMLListCollection mx:Array mx:ArrayCollection比较
2010-08-23 08:38 984mx:Module 是模块化,好处是,预先不加载,用的时候才加 ... -
flex学习资料
2010-08-19 15:45 1022flex动态效果演示: http://www.efflex.o ... -
使用BlazeDS Java的数据对应表
2010-08-19 12:15 923使用BlazeDS Java的数据对应表 从Action ... -
通道端点配置1
2010-08-19 12:14 997通道端点配置 选择端点 BlazeDS提供了下列 ... -
blazeds学习笔记一整体认识
2010-08-19 12:13 1505blazeds学习笔记一整体认识 BlazeDS是一组服 ... -
后台主动推数据
2010-08-19 12:08 1219后台主动推数据 view sourceprint?1 Asyn ... -
Producer Consumer讲解
2010-08-19 11:46 1272blazeds学习笔记四Producer Consumer讲解 ... -
blazeds学习笔记
2010-08-19 11:39 1083blazeds学习笔记三Message?s ...
相关推荐
项目 "ProducerConsumer-CSharp" 可能包含了这些组件的实例,展示了如何在 C# 中构建一个功能完备的生产者-消费者系统。通过研究这个项目,你可以了解到如何在实际代码中应用这些并发和线程控制机制,以及如何优化多...
在这里,`Main`类会初始化`EventStorage`实例,并将其传递给生产者和消费者,使得它们可以共享这个队列。 3. `Producer.java`: 这个文件可能包含了生产者线程的实现。生产者线程会不断地生成数据(在这种情况下可能...
本文将深入探讨如何使用Eureka构建Producer(服务提供者)和Consumer(服务消费者),并利用Feign和Ribbon进行远程调用。 1. **Eureka Server** Eureka Server作为服务注册中心,负责管理所有微服务实例的信息。每...
服务提供者需要配置服务实例的ID和服务组名,而服务消费者则需要配置服务的名称,用于从Eureka Server查找服务实例。 7. **Ribbon与Feign的使用** 在Spring Cloud中,Eureka通常与Ribbon或Feign结合使用,实现服务...
1. **生产者(Producer)**: 生产者是向 Kafka 集群发布消息的应用程序。在 Spring Boot 中,可以通过 `KafkaTemplate` 或自定义配置来发送消息。 2. **消费者(Consumer)**: 消费者从 Kafka 集群中读取消息并处理...
标题中的“Peterson_producer_consumer.zip_c语言Peterson”指的是一个使用C语言实现的基于Peterson算法的生产者-消费者问题实例。生产者-消费者问题是多线程编程中常见的同步问题,而Peterson算法是解决两个进程...
标题中的“spring-kafka-producer-consumer-example”表明这是一个关于Spring Boot应用,它使用了Apache Kafka作为消息中间件,展示了生产者(producer)和消费者(consumer)的实现。描述中的“Simple application ...
"ProducerConsumer"是一个基于Java和SpringBoot框架的生产者/消费者问题的应用实例。生产者/消费者问题是多线程编程中的经典问题,它涉及到如何在多个线程之间共享资源,以避免数据竞争和提高效率。在这个示例中,...
这个名为"Kafka-producer-consumer"的项目显然关注的是Kafka中的生产者(Producer)和消费者(Consumer)组件,这两部分是Kafka生态系统中的核心元素。在这里,我们将深入探讨Kafka的生产者与消费者模型,以及如何...
1. **创建BlockingQueue实例**:选择合适的`BlockingQueue`实现,如`ArrayBlockingQueue`,设定其容量。例如: ```java BlockingQueue<Integer> queue = new ArrayBlockingQueue(10); ``` 2. **定义生产者类...
7. **Producer实例和Consumer实例**:每个Producer或Consumer可以有多个实例,它们可以在不同的进程或机器上运行。Producer实例和Consumer实例都是线程安全的,可以跨线程共享。 消息队列MQ提供了两种消费模式: -...
`Producer产生一个数字而Consumer消费这个数字.doc`文件可能是对这个示例的详细文档,包括代码解释和运行结果。而`www.pudn.com.txt`可能包含了获取或参考此示例的来源信息。 在实际应用中,生产者消费者模式广泛...
广播消费模式下,相同 Consumer Group 的每个 Consumer 实例都接收全量的消息。 普通顺序消息(Normal Ordered Message) 普通顺序消息是指消费者通过同一个消费队列收到的消息是有顺序的,不同消息队列收到的消息...
- **Consumer.java**: 实现消息消费者,创建一个Consumer实例,设置NameServer地址,订阅主题,并注册回调函数处理接收到的消息。 ```java DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(...
在这些实例中,我们将看到如何使用生产者(Producer)创建消息并发送到队列(Queue)或主题(Topic)。消费者(Consumer)则从这些队列或主题中接收消息。理解如何创建消息对象,设置其属性,并通过Session和...
consumer = topic.get_simple_consumer(consumer_group='test', auto_commit_enable=True, auto_commit_interval_ms=1, consumer_id='test') ``` `auto_commit_enable=True`意味着消费者会定期提交已读取的消息,...
要创建一个C# Kafka生产者,你需要初始化一个ProducerConfig对象,并使用其创建一个Producer实例。设置必要的配置,如BootstrapServers(Kafka集群的地址),然后使用ProduceAsync方法将消息发送到特定的主题。例如...
在Eureka双节点实例中,可能还会包含服务提供者(Producer)和服务消费者(Consumer)的示例代码。服务提供者会实现业务逻辑,并注册到Eureka Server;服务消费者则会通过Eureka Server找到服务提供者,进行远程调用...
这通常涉及创建Producer实例,设置配置,然后调用send方法发送消息。 3. **消费者API**:消费者从Kafka的主题中读取数据。Kafka支持两种消费者模式:旧版的Simple Consumer和新版的Consumer Group。Consumer Group...
Kafka是一个发布/订阅模型的消息队列,它包含生产者(Producer)、消费者(Consumer)和主题(Topic)。生产者负责发布消息到主题,而消费者则订阅这些主题并消费消息。消费者通过消费者组(Consumer Group)进行...