建立SOA架构中的事件驱动服务 (4)
[ 来源:互网络 | 更新日期:2007-09-06 04:30:52 | 浏览次数:15814]
简介:及时响应实时的变化和事件成为了企业级架构的最重要需求。这篇文章讨论面向服务框架的技术和机制,这些技术使得该框架高效发送、接受那些跨越层级结构的同步和异步事件,而不需要知道产生这些事件的系统方面的细节
? 一个终端调解者
? 一个生命周期适配器工厂
? 一个组件调解者
? 一个池化工厂
? 一个异常策略
Mule管理器
Mule管理器维护和提供以下服务 :
? 代理
? 提供者
? 连接器
? 终端
? 转换器
? 拦截器堆栈
? 一个Mule模型
? 一个Mule服务器
? 事务管理器
? 应用程序属性
? Mule配制
图2演示了Mule框架上层消息流视图

图2:Mule上层架构
Mule事件对象
Mule事件对象对象包含事件数据和被组件所感知和操控的属性。属性是任意的,在事件创建之后任何时间可被设置。
org.mule.umo.UMOEvent类代表了一个在Mule环境中出现的时间。所有在组件之间发送或接收的数据都是org.mule.umo.UMOEvent的一个实体。可以访问一个原始的或被转换的Mule事件对象中的数据能。一个Mule事件对象使用一个与提供者管理的提供者转换数据,提供者收到数据后把事件中的有效载荷转换成当前组件所识别的格式。
一个Mule事件对象的有效有效载荷能通过org.mule.umo.UMOMessage接口访问,一个org.mule.umo.UMOMessage实例由有效载荷和它的属性组成。这个接口是不同技术实现的消息对象的一个抽象。
org.mule.extras.client.MuleClient类定义了一个简单的借口,允许Mule客户端从Mule服务器接收和发送事件数据。在大多数Mule应用程序里,时间是被一些外部的并发行为所触发,例如一个主题上接收到消息或在目录里一个文件被删除。
下面演示了如何去发送一个同步事件到另外的Mule组件:
String componentName = "MyReceiver";
// The name of the receiving component. String transformers = null;
// A comma-separated list of transformers
// to apply to the result message. String payload = "A test event";
// The payload of the event. java.util.Map messageProperties = null;
// Any properties to be associated
// with the payload.MuleClient client = new MuleClient();
UMOMessage message = client.sendDirect(componentName,
transformers,
payload,
messageProperties);System.out.println("Event result: " + message.getPayloadAsString());
MuleClient类需要一个服务器URL区定义它所连接的远程Mule服务器的终端。URL定义了传输协议、接收消息的地址,提供者在派遣一个事件时可以随时使用这些信息。终端例示如下:
? vm://com.jeffhanson.receivers.Default: 使用虚拟机的提供者派遣到一个com.jeffhanson.receivers.Default
? jms://jmsProvider/accounts.topic:使用全局注册的jmsProvider派遣一个JMS消息到ccounts.topic.
? jms://accounts.topic: 使用第一个(默认)的JMS提供者派遣JMS消息
Mule事件处理
Mule可以在三种不同的方式发送和节后艘事件:
1.异步方式:一个组件可通过不同的线程同时处理多个事件的发送和接收
2.同步方式:在一个组件重新工作之前,一个单一的事件必须


您的位置:
