欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成

程序员文章站 2024-03-22 12:21:40
...

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

通常,通过使用基于HTTP或REST的SOAP(即通过基于HTTPJavaScript对象表示法(JSON))来访问SPSS Scoring Service。 这两种机制本质上都是同步的。 有时,出于性能或技术要求,您可能希望与SPSS Scoring Service进行异步,无阻塞的集成。 在这种情况下,基于SOAP over JMS的集成会有所帮助。 本教程显示了如何通过SPSS Scoring Service实现基于JMS的SOAP集成。 它还包括SPSS和IBM Integration Bus的配置详细信息。

在本教程中,将在IBMWebSphere®Application Server环境中的SPSS Collaboration and Deployment Services上部署和运行SPSS Scoring Service。

在SPSS应用程序服务器上配置JMS

IBM SPSS Collaboration and Deployment Services具有预定义的JMS资源,供Collaboration and Deployment Services本身使用。 要使外部JMS客户端访问这些JMS资源,您需要进行以下配置:

  1. 在WebSphere Integrated Solutions Console中,验证传输设置:
    1. 在左侧导航窗格中,选择安全性>全局安全性
    2. 在“全局安全性”面板中,选择“ RMI / IIOP”
    3. 在“ CSIv2入站通信”面板中的“ CSIv2传输层”下,对于“ 传输” ,选择“ 支持SSL” (图1)。
      图1. RMI / IIOP安全性
      ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成
  2. 验证服务器端口配置:
    1. 在左侧导航窗格中,选择服务器>服务器类型> WebSphere应用程序服务器
    2. 在WebSphere Application Server面板中,选择SPSSServer
    3. 在“ SPSSServer”面板中,选择“ 端口”
    4. 在“端口”面板中,对于BOOTSTRAP_ADDRESS和ORB_LISTENER_ADDRESS端口名,验证是否可以从IBM Integration Bus服务器访问主机名(在本示例中为spss.ibm.com )。 在您的环境中,如果IBM Integration Bus服务器远离SPSS,则主机名localhost将不起作用。 您可能必须将其替换为SPSS服务器的实际主机名。 因此,我们指定了实际的主机名,如图2所示。
      图2.服务器端口配置
      ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成
  3. 配置队列连接工厂:
    1. 在左侧导航窗格中,选择资源> JMS>队列连接工厂
    2. 在“队列连接工厂”面板中,选择ConnectionFactory
    3. 在CDSQueueConnFactory面板的“提供者端点”框中,使用格式<Bus_Member_Host_Name>:<SIB-Endpoint-Address-Port>:BootstrapBasicMessaging更新连接工厂<Bus_Member_Host_Name>:<SIB-Endpoint-Address-Port>:BootstrapBasicMessaging

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

      图3.队列连接工厂
      ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成

定义响应队列端点

SPSS Scoring Service将响应队列用作答复队列。 要创建队列及其JNDI定义:

  1. 定义一个带有标识符的新队列:
    1. 在左侧导航窗格中,选择服务集成>总线> CDS_BUS
    2. 在CDS_BUS面板中,选择Destinations
    3. 在“目标”面板中,单击“ 新建”以定义新队列。 在此示例中,对于标识符,我们指定SPSSResponse ,如图4所示。
      图4.服务总线中的响应队列
      ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成
  2. 为刚创建的响应队列创建一个JNDI定义:
    1. 在左侧导航窗格中,选择资源> JMS>队列
    2. 单击“ 新建” ,然后选择“ 默认消息传递提供程序”
    3. 在“配置”面板中,对于JNDI名称 ,输入queue/SPSSResponse
      图5.响应队列的JNDI定义
      ibm spss代码_通过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是集成节点的名称:
    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评分服务将响应返回到预定目标。 要实现非阻塞集成,您可以定义单独的请求和响应处理流程。

请求流程

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

图6.请求流
ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成

图7显示了在JMSOutput节点上设置的属性。 目标队列”字段设置为queue/PASWScoring ,这是Collaboration and Deployment Services的默认请求队列。 对目标答复字段设置为queue/SPSSResponse ,该queue/SPSSResponse是在定义响应队列端点中的步骤2中创建的。 在“ JMS连接”选项卡上,“ 连接工厂名称”设置为ConnectionFactory

图7. JMSOutput节点属性
ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成

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

清单1.用于存储HTTP会话标识符的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评分服务将请求消息的JMSMessageID设置为响应消息的JMSCorrelationID,从而允许请求消息和回复消息的相关性。 您可以使用“ JMS MQ转换”节点将JMSCorrelationID转换为MQ相关ID。 如图8所示,具有“通过关联ID获取”属性的MQGET节点用于从SESSION_STORE队列中检索MQ消息。

图8.响应流
ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成

所获取的MQ消息的MessageID设置为HTTP请求标识符(参见清单2)。 同样,SPSS响应主体被发送到HTTP Reply节点,这使HTTP Reply节点能够将响应中继回原始客户端。

清单2.恢复SQL会话标识符的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评分服务
ibm spss代码_通过JMS将IBM Integration Bus与IBM SPSS Scoring Service集成

结论

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

翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1601_kumar-trs/1601_kumar.html