简介

WSO2MI(Micro Integrator)是一个事件驱动的企业服务总线(Enterprise Service Bus),支持消息路由、数据格式转换、通信协议转换,支持连接SAP、KAFKA、FTP、Restful API等。

  • 数据格式,可支持xml、json、csv等等
  • 通信协议,可支持SOAP、Restful API、RFC/IDOC等等
  • 连接软件,可支持SAP、KAFKA、FTP等等

​WSO2MI主要是用于企业现有很多不同架构的项目之间消息传递。之所以会产生这样的情况,是由于企业为了快速建立信息化,而采用不同的架构建立了很多项目,待到公司发展壮大后,各个项目间通信就成为了一个大麻烦,基于此,WSO2出现了。率先出现的是WSO2EI,但过于笨重,WSO2MI则是跟随技术进步,可以容器化部署的轻量级企业消息总线。

下载地址

https://github.com/wso2/micro-integrator/releases/download/v1.1.0/wso2mi-1.1.0.zip

Linux安装

mi使用jdk8,首先安装jdk8,配置好jdk环境

直接解压

unzip wso2mi-1.1.0.zip

进入bin目录下

cd wso2mi-1.1.0/bin

启动、关闭、重启,命令如下

# 启动
sh micro-integrator.sh start
# 关闭
sh micro-integrator.sh stop
# 重启
sh micro-integrator.sh restart
  • 遇到的问题
[root@instance-wd4rux07 bin]# sh micro-integrator.sh start
Error: JAVA_HOME is not defined correctly.
CARBON cannot execute java

产生原因:由于我安装的是openjdk,在profile中没有JAVA_HOME的配置

解决办法:openjdk的安装位置一般在

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre

在/etc/profile中配置JAVA_HOME

vi /etc/profile

增加如下配置

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre

刷新配置文件

source /etc/profile

验证

日志文件位置在repository/logs/wso2carbon.log

打印出micro integrator is started in 5 sec即表示启动成功

WSO2MI 配置 SAP-IDOC

不得不说,对接SAP的IDOC除了商用套件,也只有IDOC了。

资源包

SAP连接资源包如下所示

  • sapjco3.jar

  • libsapjco3.so

  • sapidoc3.jar

三个资源包均来自SAP官方网站,一般来说,这三个资源包可以找sap的basis来提供。

注意:下载的时候需要登录SAP账号

sapjco3.jar和libsapjco3.so下载地址如下

https://help.sap.com/viewer/00f68c2e08b941f081002fd3691d86a7/release/en-US/ffe3b941e82641bc97b76ce522423d83.html

sapidoc3.jar 下载地址如下

https://support.sap.com/en/product/connectors/jco.html#section_2129803369

特别注意:小编使用的是3.0.14版本

服务器配置资源包

配置sapjco3.jar、sapidoc3.jar

将这两个jar包放到WSO2的lib中

路径:wso2mi-1.1.0/lib

配置libsapjco3.so

将libsapjco3.so放到jdk的lib中

路径:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre/lib/amd64

SAP连接信息配置

在wso2mi文件夹中找到conf,并在conf下创建文件夹sap

在sap文件夹下创建两个文件s4.dest和s4.server

*.dest文件:MI作为客户端来连接SAP的配置文件

*.server文件:MI作为服务端让SAP来连接的配置文件

S4.dest文件内容如下,内容都是由SAP的basis来提供

# SAP Application Server 的 IP 地址
jco.cient.ashost=
# SAP Message Server 的 IP 地址
jco.client.mshost=
# SAP GateWay 的 IP 地址
jco.client.gwhost=
# SAP GateWay 的端口,一般是3301
jco.client.gwserv=3301
# SAP System number 一般是 01
jco.client.sysnr=01
# Sap 的 client
jco.client.client=301
# 这里3是指 TCP/IP ,还有其他的连接方式需要跟SAP的basis联系
jco.client.type=3
# SAP 分组
jco.client.group=PUBLIC
# SAP用户名
jco.client.user=
# SAP密码
jco.client.passwd=
# 语言 en表示英语
jco.client.lang=en
# 空闲断开时间
jco.client.idle_timeout=300
# 登录检查 0表示禁用 1表示启用
jco.client.logon=0
# message server 的端口
jco.client.msserv=3602
# 是否使用RFC的跟踪日志 0表示禁用 1表示启用
jco.client.trace=1
# SAP的单点登录 0禁用 1启用
jco.client.getsso2=0
# SAP的 name, SAP的basis来提供
jco.client.r3name=CSD

S4.server文件内容如下,内容都是由SAP的basis来提供

# SAP中配置的名称
jco.server.name=WSO2_IDOC
# SAP的gateway ip地址
jco.server.gwhost=
# SAP gateway的端口
jco.server.gwserv=3301
# SAP中的program id
jco.server.progid=WSO2_IDOC
jco.server.connection_count=10
# 这个属性是指 s4.dest 去除后缀文件名 s4
jco.server.repository_destination=s4
jco.server.trace=1
jco.server.unicode=1
jco.server.max_startup_delay=60000

WSO2配置 SAP IDOC监听器

在conf文件夹下找到 deployment.toml,增加以下配置信息(sap的监听器配置)

[transport.sap]
listener.idoc.enable=true
listener.idoc.class="org.wso2.carbon.transports.sap.SAPTransportListener"

WSO2MI 连接 KAFKA 必要资源包

资源包

WSO2MI连接KAFKA 需要以下资源包

  • kafka_2.11-2.4.1.jar
  • kafka-clients-2.4.1.jar
  • metrics-core-2.2.0.jar
  • scala-library-2.11.12.jar
  • zkclient-0.10.jar
  • zookeeper-3.6.0.jar

将资源包copy到wso2mi-1.1.0/lib下

WSO2MI开发工具

下载

开发WSO2MI需要使用WSO2的开发工具-WSO2 Integration Studio,绿色免安装

下载地址

https://wso2.com/integration/integration-studio/

直接解压,即可使用

创建项目

WSO2的开发工具和eclipse基本一致。

创建一个MAVEN父工程

创建一个WSO2的maven父工程

项目名称自己定义就好了

在父工程下,创建一个ESB项目

创建一个proxy service

在proxy-services文件夹下,创建Proxy Service

创建完成后,会得到一个*.xml文件

初始文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<proxy name="river" startOnLoad="true" transports="http https" xmlns="http://ws.apache.org/ns/synapse">
<target>
<!-- 接收消息标签 -->
<inSequence/>
<!-- 返回消息标签 -->
<outSequence/>
<!-- 错误处理标签 -->
<faultSequence/>
</target>
</proxy>

开发

WSO2MI提供了两种编辑方式,一种是图形化界面拖动(如下图),一种是xml文档直接编辑。

这里要留一个WSO2MI开发的坑了,博主稍后专门针对WSO2MI开发写一篇

打包

WSO2MI打成car包,然后部署到服务器上来运行。

WSO2MI打包有自己的一套体系,请以我为准。

在maven父工程下创建一个打包工程

生成car包

右键上一步生成的项目,点击Export Composite Application Project

填写名称以及路径

点击Next,选择自己的项目,就可以在响应目录下生成car包。

部署

上一步我们已经得到了car包,接下来,我们把car包部署到WSO2MI中。

把car包放到/wso2mi-1.1.0/repository/deployment/server/carbonapps

重新启动WSO2MI

WSO2 - MI的更多相关文章

  1. 使用 WSO2 API Manager 管理 Rest API

    WSO2 API Manager 简介 随着软件工程的增多,越来越多的软件提供各种不同格式.不同定义的 Rest API 作为资源共享,而由于这些 API 资源的异构性,很难对其进行复用.WSO2 A ...

  2. Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),

    Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: sele ...

  3. 系统集成之用户统一登录( LDAP + wso2 Identity Server)

    本文场景: LDAP + wso2 Identity Server + asp.net声明感知 场景 ,假定读者已经了解过ws-*协议族,及 ws-trust 和 ws-federation. 随着开 ...

  4. WSO2 ESB

    什么是WSO2 ESB? WSO2 ESB是一个轻量级的易于使用的企业服务资源总线.WSO2 ESB允许系统管理员和SOA架构师,消息路由,虚拟化,中介,转换,日志记录,任务调度,负载平衡,失败了路由 ...

  5. WSO2 Stratos手册

    WSO2 Stratos是最完整的企业级cloud solution,提供了一个开放的PaaS平台,相比于其他的PaaS平台来说,Stratos支持更多核心的服务.Stratos2.0对那些想从异构环 ...

  6. 小米2000万买域名mi.com

    来源:互联网的一些事   移动互联网之下,域名对于企业的吸引力将会越来越低,因为网站的入口多元化,不再仅凭域名.小米用超2000万人民币的代价购买mi.com域名,仅仅是为了所谓的国际化吗?小米此举, ...

  7. GDB 的MI接口

    背景介绍: libgdb过时了,目前的GDB调试前端都不用libgdb 目前有两种比较流行:- MI接口,现在应该是MI II接口,是Eclipse CDT所采用的方式- emac输出接口,这个似乎有 ...

  8. 自己对WSO2 ESB 见解

    这周没想到要更新什么内容,就把我最近工作接触的WSO2 ESB简单介绍下吧.     前提: 一切文档,知识都要与官方文档为准. WSO2 ESB: http://wso2.com/products/ ...

  9. wso2 CEP集成storm实验

    1.三台机子:192.168.225.1(manager,nimbus), 192.168.225.2(worker,supervisor), 192.168.225.3(worker,supervi ...

随机推荐

  1. Postman学习之Postman简介

    前言:对于测试人员来说,接口测试是必须掌握的一个技能:在工作中掌握了接口自动化测试无疑是如虎添翼,那么怎么开展接口测试呢?下面将介绍一款接口测试的神器——postman 1.postman背景介绍 p ...

  2. 实战!我用 Wireshark 让你“看得见“ TCP

    每日一句英语学习,每天进步一点点: 前言 为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包. 接下来丢包.乱序.超时重传.快速重传 ...

  3. 【雕爷学编程】Arduino动手做(42)---PM2.5粉尘传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  4. Vue Element-UI使用第三方icon图标(转)

    转载自:https://www.jianshu.com/p/59dd28f0b9c9 1.打开阿里icon,注册 >登录>图标管理>我的项目   2.新建项目 3. 添加icon到项 ...

  5. Jquery动画,排队与并发

    一.事件绑定 1.鼠标事件:模拟触发 什么是模拟触发? 虽然没有点在按钮上,也可以触发按钮的事件处理函数. 如何:$元素.trigger("事件名") 即使没有点在指定的元素上,也 ...

  6. SpringCloud异常处理统一封装我来做-使用篇

    SpringCloud异常处理统一封装我来做-使用篇 简介 重复功能我来写.在 SpringBoot 项目里都有全局异常处理以及返回包装等,返回前端是带上succ.code.msg.data等字段.单 ...

  7. 【Oracle】CentOS7/CentOS8命令行安装Oracle 11G R2

    写在前面 很长一段时间内,国内互联网公司都在提倡"去IOE",但是很多企业还是愿意为昂贵的Oracle数据库买单,不少读者所在的公司也在用Oracle,很多读者自行安装Oracle ...

  8. nodejs链接mysql 中的问题

    首先你得对mysql ,有个大概的认识. 比如说:如何安装,使用基本的语法,测试安装是否能成功,以及成功之后简单的对于数据库的,操作(增删改查)... 下面是业务场景:在爬虫过程中,租后需要将信息输出 ...

  9. OAUTH开放授权

    OAUTH开放授权 OAUTH开放授权为用户资源的授权提供了一个安全的.开放而又简易的标准.OAUTH的授权不会使第三方触及到用户的帐号信息例如用户名与密码等,即第三方无需使用用户的用户名与密码就可以 ...

  10. PHP 获取当前目录下的所有文件

    我们有时候会想拿到当前目录下的所有文件名,以下就是我写的一个方法,请大家参考 // 获取当前文件的上级目录 $con = dirname(__FILE__); // 扫描$con目录下的所有文件 $f ...