内容摘要:讨论使用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();
}
}
责编:豆豆技术应用