标签存档: ESB - 第2页

斯里兰卡工作日记(前记)

北京时间12号早上6点就起床收拾行李,虽然前一天晚上已整理的差不多了,但以防万一,还是在仔细的看了下.确认没有错处了才除了门,因为今天是一个不简单的出差,将前往斯里兰卡为当地国家电信的CRM/ESB工作.

今天的简单行程(时间都在左右):

8:00 公司集合

10:00 到底杭州萧山国际机场

10:45 登机前往香港国际机场

12:30 飞机起飞(由于上海到香港空中管制,延迟了1个多小时)

14:30 到达香港国际机场

15:50 登机前往斯里兰卡飞机,中途需要停留新加坡

0:20 下机.时差开始2.5小时

1:00 到安排的别墅.

睡了~~

…… 睡觉了

住所位置

Apache Servicemix 简单示例

一个简单的场景,做下笔记:

典型的In-Out接口: cxf-bc(consumer) –> eip “Static Routing Slip” –> saxon –> cxf-bc(provider)

CXF配置

<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:cxfbc=“http://servicemix.apache.org/cxfbc/1.0”
xmlns:xsi=“http://http://www.w3.org/2001/XMLSchema-instance”
xmlns:novaesb=“http://www.hongcheng.com/novaesb/selectnumber”
xmlns:clarity=“http://webservices/clarity/api/numbermanagement”
xsi:schemaLocation=“http://servicemix.apache.org/cxfbc/1.0 http://servicemix.apache.org/schema/servicemix-cxf-bc-3.2.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd”>   

 

<bean id=“propertyConfigurer”
        class=“org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
    <property name=“location”>
        <value>classpath:slt-npe-config.properties</value>
    </property>
</bean>

<cxfbc:consumer wsdl=“classpath:SelectNumber.wsdl”
    service=“novaesb:SelectNumberServer”
    endpoint=“SelectNumberPort”
    locationURI=“${novaesb.selectnumber.url}”
    targetService=“novaesb:routingSlip”
    targetEndpoint=“endpoint”
    useJBIWrapper=“false”/>

<cxfbc:provider wsdl=“classpath:NumberManagementAPIService.wsdl”
    service=“clarity:NumberManagementAPIService”
    endpoint=“NumberManagementAPIPort”
    useJBIWrapper=“false”/>

</beans>

EIP配置

<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns:eip=“http://servicemix.apache.org/eip/1.0”
xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://http://www.w3.org/2001/XMLSchema-instance”
xmlns:novaesb=“http://www.hongcheng.com/novaesb/selectnumber”
xmlns:clarity=“http://webservices/clarity/api/numbermanagement”
xsi:schemaLocation=“http://servicemix.apache.org/eip/1.0 http://servicemix.apache.org/schema/servicemix-eip-3.2.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd”>

<eip:static-routing-slip service=“novaesb:routingSlip” endpoint=“endpoint”>
    <eip:targets>
        <eip:exchange-target service=“novaesb:xslt” endpoint=“endpoint”/>
        <eip:exchange-target service=“clarity:NumberManagementAPIService” endpoint=“NumberManagementAPIPort” operation=“clarity:getNumbersViaAreaHierarchy”/>
    </eip:targets>
</eip:static-routing-slip>

</beans>

XSLT

<?xml version=”1.0″ encoding=”UTF-8″?>
<xsl:stylesheet version=‘1.0’
xmlns:xsl=‘http://www.w3.org/1999/XSL/Transform’
xmlns:novaesb=“http://www.hongcheng.com/novaesb/selectnumber”
xmlns:clarity=“http://webservices/clarity/api/numbermanagement”> 

 

<xsl:namespace-alias stylesheet-prefix=“novaesb” result-prefix=“clarity”/>

<xsl:output method=“xml” indent=“yes” encoding=“UTF-8”/>

<xsl:template match=“//novaesb:getNumbersViaAreaHierarchy”>
    <clarity:getNumbersViaAreaHierarchy>
        <ServiceType><xsl:value-of select=“novaesb:ProductName”/></ServiceType>
        <NumberType><xsl:value-of select=“novaesb:CustomerLevel”/></NumberType>
        <Area><xsl:value-of select=“novaesb:Area”/></Area>
        <CityCode><xsl:value-of select=“novaesb:CityCode”/></CityCode>
        <NumberStatus><xsl:value-of select=“novaesb:NumberStatus”/></NumberStatus>
        <HowMany><xsl:value-of select=“novaesb:HowMany”/></HowMany>
        <NumberPattern><xsl:value-of select=“novaesb:NumberPattern”/></NumberPattern>
        <ConsecutiveFlag><xsl:value-of select=“novaesb:ConsecutiveFlag”/></ConsecutiveFlag>
    </clarity:getNumbersViaAreaHierarchy>
</xsl:template>

</xsl:stylesheet>

可以看到,这里我去掉了JBI的包装,而采用了SOAP的包装,这里是无所谓的.个人建议采用SOAP包装.

ESB同步,异步选择,从项目实际出发(电信)

稍微总结下了目前项目中CRM通过ESB与其他系统交互时关于同步异步选择的问题。

同步和异步都是接口交互的一种模式,也可以理解成数据交互的方式。

 

同步:CRM通过ESB与外部系统直接连接保持不断,直至外部系统返回接口或状态此连接方结束。已知同步接口:查号、选号、选址、锁号…

 

 

        返回结果在同一接口返回

优点:实时性强。速度块。容错性强。

 

缺点:高峰时易造成网络堵塞。或当外部系统故障时因无法返回结果而导致业务不能持续。

 

 

异步:CRM只和ESB实时交互,即CRM数据送达ESB后就返回,CRM继续完成后续操作。ESB会把数据在空闲的时间(网络空闲)发送给其他系统。已知异步接口:创建客账户、订单送OSS…

              

                返回结果需一个新接口返回

优点:合理应用网络资源不易对外部系统造成堵塞现象。外部系统故障时,数据仍旧保留在ESB中,直到系统恢复。

缺点:实时性查。速度较慢。容错性差(外部系统故障时CRM不会感知)。如果需要返回接口需另外提供新接口。

 

 

特别选择同步还是异步请各位从生产环境考虑,在对业务影响不大的情况下建议采用异步的方式。如有疑问与我交流。