科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用JMS客户端利用空闲的计算机资源

用JMS客户端利用空闲的计算机资源

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

可以把JMS客户端放置在这些未充分利用的计算机上,从而分担一些通常应由服务器执行的工作。该客户端可以监听某个要执行的工作单元的请求队列,然后在应答队列上做出响应。

作者:中国IT实验室 来源:中国IT实验室 2007年8月24日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 这实际上创建了一种与启动和停止分发工作流的实现解耦合的面向服务方法。通过Web服务客户端,或者使用所提供的WebLogic Integration Workshop Test Browser,可以轻松对Web服务进行测试。
  分发工作流
  图2说明了负责分发工作单元的DistributeFlow.jpd、我们的简单矩阵对象以及请求队列的相关部分:

图2. 用于分发工作单元的工作流

  while循环不断地循环,直到一条stop消息改变布尔变量的值,才跳出循环并结束工作流。Event Choice等待两个Control Receive回调的其中一个。第一个回调是通过刚刚描述的Web服务从一个Message Broker通道接收一条Stop消息。第二个回调对一个Timer控件做出响应,我们已经通过该控件的属性面板对它进行了设置,每5秒钟发生一次。这将使处理继续,而下一个行为将调用定制Java控件来浏览Worker.Request队列,以获得等待处理的请求的个数。接下来,决策节点检查请求的个数是否已经超出请求的最大个数(此处的最大个数被设置为5,其值保存在一个变量中)。如果尚未超出,就会调用一个执行节点,然后使用JMS控件在请求队列中放入5个矩阵对象,如下所示:

public void perform() throws Exception {
  for(int i = 0 ; i < maxInQueue; i++) {
    matrix = new SimpleMatrix();
    jmsControl.sendObjectMessage(matrix);
  }
}

  响应工作流的JMS客户端
  响应工作流的JMS客户端与前面在WebLogic Server部分中描述的JMS客户端几乎一模一样。惟一的区别在于,现在客户端使用一条字节消息(而不是对象消息)对响应队列做出响应。客户端把SimpleMatrix对象转换为一个字节数组,并将其传递给响应队列。这样做的理由是,与绑定到响应队列的事件生成器相关联的Message Broker通道只能够监听数据流,即String、XML Bean或字节数组。相关代码被设计用于对WebLogic Integration请求消息和普通的WebLogic Server请求消息做出响应。

  接收一个已完成的工作单元的工作流如图3所示:

图3.接收程序的工作流

  这里的重要行为是perform节点,它用于把字节数组转换为一个对象并调用print()和store()方法。

public void perform() throws Exception {
   ByteArrayInputStream arrayInputStream = new
        ByteArrayInputStream(rawData.byteValue());
   ObjectInputStream objectInputStream = new
        ObjectInputStream(arrayInputStream);
   UnitOfWork unit = (UnitOfWork) objectInputStream.readObject();
   unit.print();
   unit.store();
   objectInputStream.close();
}

使用WebLogic Integration工作流
  您已经了解到,使用工作流、Java控件和Message Broker通道可以提供一种更加完善的方式,把工作分发给未完全利用的计算机。只要在流程流中添加更多的行为节点,就可以让处理过程变得像您所期望的那样面面俱到。例如,该工作流可以有一个审计控件,用于在把所有发送到内部日志文件的请求放到队列中之前对其进行审计。该工作流可以把请求重定向到其他JMS队列,只要修改JMS控件的属性值即可。为了实现可扩展性,甚至可以让远程Web服务启动多个工作流实例。最后,基于业务安排,Timer控件的时间间隔可以更小。

  使用Message Broker通道和事件生成器的另一个好处在于,WebLogic Integration Administration Console可以监控事件生成器的响应消息的数量,以便实现进一步的控制。通过控制台,您可以挂起和恢复事件生成器及通道,从而对生产事件做出响应。
这种灵活性使得WebLogic Integration工作流成为一种极具吸引力的方法。

  结束语
  使用远程JMS客户端来分发工作的优点在于,它有效地利用了网络计算机来进行某种类型的批处理工作,同时减轻了原来服务器的负担。这种方法的一个著名例子是Search for Extraterrestrial Intelligence (SETI@home)系统,它利用全世界的PC来执行工作单元。本文使用了一种JMS客户端的框架,还讨论了如何部署这类解决方案以实现可扩展性,力求让这种方法通用化。本文还讨论了用于把工作分发给远程客户端的多种方法,并提供了一种面向服务的方法作为首选。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章