SOA架构中的事件驱动服务

豆豆网   技术应用频道   2008年01月22日  【字号: 收藏本文

内容摘要:讨论使用Mule实现一个高效的事件驱动和面向服务的平台,一个轻量级的事件-消息架构,企业信息总线(ESB)模式。组件和程序可以使用Mule通过公共的JMS或其他的消息处理技术去实现通信。

  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.同步方式:在一个组件重新工作之前,一个单一的事件必须被处理完。换言之,一个创建了事件的组建发送事件时将被阻断,直到发送任务完成,因此,一次只允许处理一个事件

  3.请求-应答方式:一个组建专门请求一个事件,然后等待一个特定的时间去接收回应。

  org.mule.impl.MuleComponent实现类提供了一个具体的组建类,它包括又有创建,发送和接收事件的功能。

  执行同步动作的对象应该实现org.mule.umo.lifecycle.Callable接口,这个定义了一个简单的方法Object onCall(UMOEventContext eventContext)。Callable接口提供支持事件调用的UMO对象。虽然不是强制的,但这个接口提供了一个生命周期控制的方法,当实现这个接口的组建接收到一个消息时执行这个方法。下面展示了这个接口的简单实现。

import org.mule.umo.lifecycle.Callable;
  
public class EchoComponent
  implements Callable
{
  public Object onCall(UMOEventContext context) throws Exception
  {
    String msg = context.getMessageAsString();
    // Print message to System.out
    System.out.println("Received synchronous message: " + msg);
    // Echo transformed message back to sender
    return context.getTransformedMessage();
  }
}

责编:豆豆技术应用

正在加载评论...