ibm spss代码_通过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中开发的预测模型获得的实时分数。
通常,通过使用基于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资源,您需要进行以下配置:
- 在WebSphere Integrated Solutions Console中,验证传输设置:
- 在左侧导航窗格中,选择安全性>全局安全性 。
- 在“全局安全性”面板中,选择“ RMI / IIOP” 。
- 在“ CSIv2入站通信”面板中的“ CSIv2传输层”下,对于“ 传输” ,选择“ 支持SSL” (图1)。
图1. RMI / IIOP安全性
- 验证服务器端口配置:
- 在左侧导航窗格中,选择服务器>服务器类型> WebSphere应用程序服务器 。
- 在WebSphere Application Server面板中,选择SPSSServer 。
- 在“ SPSSServer”面板中,选择“ 端口” 。
- 在“端口”面板中,对于BOOTSTRAP_ADDRESS和ORB_LISTENER_ADDRESS端口名,验证是否可以从IBM Integration Bus服务器访问主机名(在本示例中为
spss.ibm.com
)。 在您的环境中,如果IBM Integration Bus服务器远离SPSS,则主机名localhost
将不起作用。 您可能必须将其替换为SPSS服务器的实际主机名。 因此,我们指定了实际的主机名,如图2所示。图2.服务器端口配置
- 配置队列连接工厂:
- 在左侧导航窗格中,选择资源> JMS>队列连接工厂 。
- 在“队列连接工厂”面板中,选择ConnectionFactory 。
- 在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.队列连接工厂
定义响应队列端点
SPSS Scoring Service将响应队列用作答复队列。 要创建队列及其JNDI定义:
- 定义一个带有标识符的新队列:
- 在左侧导航窗格中,选择服务集成>总线> CDS_BUS 。
- 在CDS_BUS面板中,选择Destinations 。
- 在“目标”面板中,单击“ 新建”以定义新队列。 在此示例中,对于标识符,我们指定SPSSResponse ,如图4所示。
图4.服务总线中的响应队列
- 为刚创建的响应队列创建一个JNDI定义:
- 在左侧导航窗格中,选择资源> JMS>队列 。
- 单击“ 新建” ,然后选择“ 默认消息传递提供程序” 。
- 在“配置”面板中,对于JNDI名称 ,输入
queue/SPSSResponse
。图5.响应队列的JNDI定义
在IBM Integration Bus上配置JMSProvider
IBM Integration Bus提供了JMS节点,以支持与任何符合JMS的应用服务器的JMS通信。 要配置IBM Integration Bus以访问Collaboration and Deployment Services的JMS引擎,请执行以下操作:
- 创建目录,例如:
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
- 更新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.请求流
图7显示了在JMSOutput节点上设置的属性。 “ 目标队列”字段设置为queue/PASWScoring
,这是Collaboration and Deployment Services的默认请求队列。 对目标的答复字段设置为queue/SPSSResponse
,该queue/SPSSResponse
是在定义响应队列端点中的步骤2中创建的。 在“ JMS连接”选项卡上,“ 连接工厂名称”设置为ConnectionFactory
。
图7. JMSOutput节点属性
您必须临时存储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.响应流
所获取的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评分服务
结论
在本教程中,您学习了如何通过在非阻塞方法中使用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
上一篇: 员工信息管理系统
下一篇: 大数据cloudera集群部署安装详解