转载

通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

简介

IBM SPSS Collaboration and Deployment Services 是一个企业级应用程序,它允许部署和使用预测分析。客户端应用程序使用 IBM SPSS Collaboration and Deployment Services 中提供的 Web 服务来访问分析资产。通过使用 SPSS Scoring Service,客户端应用程序可以采用从 IBM SPSS Modeler 中开发的预测模型得到的实时分数。

通常 SPSS Scoring Service 使用基于 HTTP 或 REST 的 SOAP(也就是说,使用 HTTP 上的 JavaScript Object Notation (JSON))来访问。这些两种机制实际上是同步的。有时为了性能和技术需要,您可能希望采用与 SPSS Scoring Service 的异步、非阻塞性集成。在这种情况下,基于 SOAP over JMS 的集成很有帮助。本教程将展示如何与 SPSS Scoring Service 实现基于 SOAP over JMS 的集成。文中还提供了 SPSS 和 IBM Integration Bus 的配置细节。

在本教程中,SPSS Scoring Service 是在一个 IBM WebSphere® Application Server 环境中的 SPSS Collaboration and Deployment Services 上部署和运行的。

回页首

在 SPSS 应用服务器上配置 JMS

IBM SPSS Collaboration and Deployment Services 预定义了供 Collaboration and Deployment Services 自身访问的 JMS 资源。要让外部 JMS 客户端也能访问这些 JMS 资源,需要执行以下配置:

  1. 在 WebSphere Integrated Solutions Console 中,验证传输设置:
    1. 在左侧导航窗格中,选择 Security > Global Security
    2. 在 Global Security 面板中,选择 RMI/IIOP
    3. 在 CSIv2 inbound communications 面板中的 CSIv2 Transport Layer 下,为 Transport 选择 SSL-supported (图 1)。

      图 1. RMI/IIOP 安全性

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

      点击查看大图

      关闭 [x]

      图 1. RMI/IIOP 安全性

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

  2. 验证服务器端口配置:
    1. 在左侧导航窗格中,选择 Servers > Server Types > WebSphere application servers
    2. 在 WebSphere application servers 面板中,选择 SPSSServer
    3. 在 SPSSServer 面板中,选择 Ports
    4. 在 Ports 面板中,对于 BOOTSTRAP_ADDRESS 和 ORB_LISTENER_ADDRESS 端口名称,确认主机名(在本例中为 spss.ibm.com )可以从 IBM Integration Bus 服务器进行访问。在您的环境中,如果 IBM Integration Bus 服务器对 SPSS 而言是远程的,主机名 localhost 将不起作用。您可能需要将它替换为 SPSS 服务器的实际主机名。出于这个原因,我们指定了实际主机名,如图 2 所示。

      图 2. 服务器端口配置

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

      点击查看大图

      关闭 [x]

      图 2. 服务器端口配置

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

  3. 配置队列连接工厂:
    1. 在左侧导航窗格中,选择 Resources > JMS > Queue connection factories
    2. 在 Queue connection factories 面板中,选择 ConnectionFactory
    3. 在 CDSQueueConnFactory 面板中的 Provider endpoints 框中,使用格式 <Bus_Member_Host_Name>:<SIB-Endpoint-Address-Port>:BootstrapBasicMessaging 更新连接工厂的端点。

      对于 <SIB-Endpoint-Address-Port> ,查看服务器端口配置(图 2)。在示例中(如图 3 所示),我们输入了 spss.ibm.com:7277:BootstrapBasicMessaging

      图 3. 队列连接工厂

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

      点击查看大图

      关闭 [x]

      图 3. 队列连接工厂

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

定义一个响应队列端点

使用一个响应队列作为 SPSS Scoring Service 的回复队列。要创建一个队列和它的 JNDI 定义:

  1. 使用一个标识符定义一个新队列:
    1. 在左侧导航窗格中,选择 Service Integration > Buses > CDS_BUS
    2. 在 CDS_BUS 面板中,选择 Destinations
    3. 在 Destinations 面板中,单击 New 定义一个新队列。在这个示例中,对于标识符,我们指定了 SPSSResponse ,如图 4 所示。

      图 4. 服务总线中的响应队列

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

      点击查看大图

      关闭 [x]

      图 4. 服务总线中的响应队列

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

  2. 为您刚创建的响应队列创建一个 JNDI 定义:
    1. 在左侧导航窗格中,选择 Resources > JMS > Queues
    2. 单击 New ,选择 Default messaging provider
    3. 在 Configuration 面板中,对于 JNDI name ,输入 queue/SPSSResponse

      图 5. 响应队列的 JNDI 定义

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

      点击查看大图

      关闭 [x]

      图 5. 响应队列的 JNDI 定义

      通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

回页首

在 IBM Integration Bus 上配置 JMSProvider

IBM Integration Bus 提供了 JMS 节点,以便与任何兼容 JMS 的应用服务器进行 JMS 通信。要配置 IBM Integration Bus 来访问 Collaboration and Deployment Services 的 JMS 引擎:

  1. 创建一个目录,例如: c:/WebSphere_WAS_Client 。然后,从 WebSphere Application Server 中的 /runtimes 目录复制以下两个 JAR 文件,将它们粘贴到您刚创建的目录:
    • com.ibm.ws.sib.client.thin.jms_<WAS_version>.jar
    • com.ibm.ws.ejb.thinclient_<WAS_version>.jar
  2. 更新 JMSProvider WebSphere_WAS_Client 以将它的 jarURL 属性设置为您刚创建的目录。输入以下命令,其中 IIB9B 是集成节点的名称:

    点击查看代码清单

    关闭 [x]

    mqsichangeproperties IIB9B -c JMSProviders -o WebSphere_WAS_Client -n jarsURL -v  c:/WebSphere_WAS_Client

回页首

与 SPSS Scoring Service 的集成的非阻塞模式

在非阻塞集成模式中,IBM Integration Bus 的请求处理流将请求发送到 SPSS Scoring Service。处理流不会等待返回响应。SPSS Scoring Service 将响应返回到预先确定的目标。要实现非阻塞集成,可以定义单独的请求和响应处理流。

请求流

为了演示该集成,图 6 显示了请求流。出于简单性,在本教程中,评分 SOAP 请求由 HTTP 上的一个客户端发送。使用 JMSOutput 节点将 SOAP 信封请求消息发送到 SPSS Collaboration and Deployment Services 服务器上的 JMS 队列。

图 6. 请求流

通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

图 7 显示了在 JMSOutput 节点上设置的属性。 Destination queue 字段设置为 queue/PASWScoring ,它是 Collaboration and Deployment Services 的默认请求队列。 Reply to destination 字段被设置为 queue/SPSSResponse ,它已在定义一个响应队列端点中的第 2 步中创建。在 JMS Connection 选项卡上, Connection factory name 被设置为 ConnectionFactory

图 7. JMSOutput 节点属性

通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

您必须临时存储 HTTP Session Identifier。在处理响应流中的 SPSS 响应消息时,需要使用这个 ID 来抓取相关的 HTTP 会话。一个简单的扩展 SQL (ESQL) 节点 Create_MQMD_Identifiers 准备了一条 0 字节 MQ 消息。它将 JMSOutput 节点返回的 JMSMessageId 设置为 MQ Correlation ID,将 HTTP Session Identifier 设置为 MQ 消息 ID(参见清单 1 了解 ESQL 内容)。MQPUT 节点将这个 MQ 消息保存到 SESSION_STORE 队列。

清单 1. 存储 HTTP Session Identifier 的 ESQL

点击查看代码清单

关闭 [x]

清单 1. 存储 HTTP Session Identifier 的 ESQL

CREATE COMPUTE MODULE InvokeSPSSScoring_Non_Blocking_Create_MQMD_Identifiers  CREATE FUNCTION Main() RETURNS BOOLEAN  BEGIN      SET OutputRoot.MQMD.CorrelId=CAST ( SUBSTRING(InputLocalEnvironment.WrittenDestination.JMS.DestinationData.JMSMessageID AFTER 'ID:') AS BLOB);   SET OutputRoot.MQMD.MsgId=CAST (Environment.Variables.HTTP.RequestIdentifier AS BLOB);   RETURN TRUE;  END; END MODULE;

响应流

响应流从 JMS 队列 queue/SPSSResponse 中读取 SPSS 评分响应。SPSS Scoring Service 将请求消息的 JMSMessageID 设置为响应消息的 JMSCorrelationID,这允许您将请求与回复消息相关联。使用 JMS MQ Transform 节点将 JMSCorrelationID 转换为 MQ 关联 ID。如图 8 所示,使用了一个具有 Get by correlation ID 属性的 MQGET 节点从 SESSION_STORE 队列中检索 MQ 消息。

图 8. 响应流

通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

抓取的 MQ 消息的 MessageID 被设置为 HTTP Request Identifier(参见清单 2)。另外,SPSS 响应正文发送到 HTTP Reply 节点,它使得 HTTP Reply 节点能够将响应发送回起源客户端。

清单 2. 还原 HTTP 会话标识符的 ESQL

CREATE COMPUTE MODULE InvokeSPSSScoring_Non_Blocking_Response  CREATE FUNCTION Main() RETURNS BOOLEAN  BEGIN    SET OutputRoot.XMLNSC=InputRoot.XMLNSC;    SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier=InputRoot.MQMD.MsgId;    RETURN TRUE;  END; END MODULE;

回页首

验证请求和响应消息流

要触发请求流,可以使用任何工具(比如 Firefox HttpRequester 或 SoapUI)将 SOAP 请求提交到 IBM Integration Bus。在这里,我们使用了 SoapUI 来发起请求。图 9 显示了 SoapUI 客户端收到的成功响应。

图 9. SPSS Scoring Service 的成功调用

通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

点击查看大图

关闭 [x]

图 9. SPSS Scoring Service 的成功调用

通过 JMS 集成 IBM Integration Bus 与 IBM SPSS Scoring Service

回页首

结束语

在本教程中,您学习了如何实现了一个 IBM Integration Bus 流,使用 JMS 以一种非阻塞方法调用 IBM SPSS Scoring Service。您还学习了 SPSS、IBM Integration Bus JMS 配置。还学习了如何使用 JMS 消息标识符来在请求和回复消息之间建立关联。

回页首

参考资料

  • 有关 IBM Integration Bus 的产品文档库,请参阅 IBM Integration Bus Library 。
  • 有关 IBM Integration Bus 的产品文档,请参阅IBM 知识中心。
  • 有关 SPSS Collaboration and Deployment Services 的产品信息和文档,请参阅IBM 知识中心。
  • 要查阅 developerWorks® WebSphere 专区中的 IBM Integration Bus 教程,请访问 技术库 。
  • IBM developerWorks 中国 WebSphere 专区 :为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。
  • 加入 developerWorks 中文社区 ,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
原文  http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1601_kumar-trs/1601_kumar.html?ca=drs-
正文到此结束
Loading...