項目中有遇到兩個網絡不通但是需要通路的情況我們可以通過配置mule來實作網絡互通,
用戶端(外網)配置ftp目錄需要兩個ftp
<?xml version="1.0" encoding="UTF-8"?>
< mule xmlns:ftp=“http://www.mulesoft.org/schema/mule/ee/ftp” xmlns:file=“http://www.mulesoft.org/schema/mule/file”
xmlns=“http://www.mulesoft.org/schema/mule/core” xmlns:doc=“http://www.mulesoft.org/schema/mule/documentation”
xmlns:spring=“http://www.springframework.org/schema/beans” version=“EE-3.6.1”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd”>
< global-property name=“responseFilePath” value=“D:\temp\response” doc:name=“Global Property”>< /global-property>
< global-property name=“requestFilePath” value=“D:\temp\request” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.host.get” value=“192.168.2.222” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.port.get” value=“21” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.user.get” value=“shs” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.password.get” value=“123456” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.host.send” value=“192.168.2.222” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.port.send” value=“24” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.user.send” value=“shs1” doc:name=“Global Property”>< /global-property>
< global-property name=“client.ftp.password.send” value=“123456” doc:name=“Global Property”>< /global-property>
< flow name=“clientSendFileToFTP”>
< file:inbound-endpoint path="${requestFilePath}" responseTimeout=“10000” doc:name=“File” pollingFrequency=“100” encoding=“UTF-8”>< /file:inbound-endpoint>
<ftp:outbound-endpoint host="${client.ftp.host.send}" port="${client.ftp.port.send}" responseTimeout="10000" doc:name="FTP" outputPattern="#[message.inboundProperties['originalFilename']]" password="${client.ftp.password.send}" user="${client.ftp.user.send}" path="" encoding="UTF-8"></ftp:outbound-endpoint>
</flow>
<flow name="clientGetFileFromFTP">
<ftp:inbound-endpoint host="${client.ftp.host.get}" port="${client.ftp.port.get}" responseTimeout="10000" doc:name="FTP" password="${client.ftp.password.get}" user="${client.ftp.user.get}" path="" pollingFrequency="100" encoding="UTF-8"></ftp:inbound-endpoint>
<file:outbound-endpoint path="${responseFilePath}" responseTimeout="10000" doc:name="File" outputPattern="#[message.inboundProperties['originalFilename']]" encoding="UTF-8"></file:outbound-endpoint>
</flow>
< /mule>
用戶端監聽端口配置(可以配置監聽多個端口):
<?xml version="1.0" encoding="UTF-8"?>
< mule xmlns:file=“http://www.mulesoft.org/schema/mule/file”
xmlns:http=“http://www.mulesoft.org/schema/mule/http”
xmlns=“http://www.mulesoft.org/schema/mule/core” xmlns:doc=“http://www.mulesoft.org/schema/mule/documentation”
xmlns:spring=“http://www.springframework.org/schema/beans” version=“EE-3.6.1”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd”>
<!--監聽IP,通常是本機内網IP;監聽端口1-->
<http:listener-config name="HTTP_Listener_Configuration_Java_service" host="192.168.2.111" port="8080" doc:name="HTTP Listener Configuration" connectionIdleTimeout="60000"/>
<sub-flow name="send-get">
<set-property propertyName="filename" value="#[function:uuid].json" doc:name="filename"/>
<set-variable variableName="responseFilePath" value="${responseFilePath}" doc:name="responseFilePath"/>
<custom-transformer class="com.netbox.proxy.SaveRequest" doc:name="SaveRequest" encoding="UTF-8"/>
<file:outbound-endpoint path="${requestFilePath}" responseTimeout="20000" doc:name="File" encoding="UTF-8"/>
<custom-transformer class="com.netbox.proxy.GetResponse" doc:name="GetResponse" encoding="UTF-8"/>
<logger level="INFO" doc:name="Logger"/>
</sub-flow>
<flow name="FLOW_Java_service">
<http:listener config-ref="HTTP_Listener_Configuration_Java_service" path="/*" allowedMethods="Get,Post" doc:name="HTTP" responseStreamingMode="ALWAYS">
<http:response-builder>
<http:header headerName="Access-Control-Allow-Origin" value="*"/>
<http:header headerName="Access-Control-Allow-Methods" value="POST,GET"/>
<http:header headerName="Access-Control-Allow-Credentials" value="true"/>
<http:header headerName="Content-Type" value="text/html; charset=utf-8"/>
</http:response-builder>
</http:listener>
<!--對應管綜網安網服務子系統TOMCAT位址例:http://IP:8080/ -->
<set-variable variableName="serviceUrl" value="http://192.168.2.234:8080/" doc:name="serviceUrl"/>
<set-variable variableName="charset" value="utf-8" doc:name="charset"/>
<set-variable variableName="serviceType" value="java" doc:name="serviceType"/>
<flow-ref name="send-get" doc:name="send-get"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
<!--監聽IP,通常是本機内網IP;監聽端口1-->
<http:listener-config name="HTTP_Listener_Configuration_App_service" host="192.168.2.111" port="8088" doc:name="HTTP Listener Configuration" connectionIdleTimeout="60000"/>
<sub-flow name="send-get-app">
<set-property propertyName="filename" value="#[function:uuid].json" doc:name="filename"/>
<set-variable variableName="responseFilePath" value="${responseFilePath}" doc:name="responseFilePath"/>
<custom-transformer class="com.netbox.proxy.SaveRequestApp" doc:name="SaveRequest" encoding="UTF-8"/>
<file:outbound-endpoint path="${requestFilePath}" responseTimeout="20000" doc:name="File" encoding="UTF-8"/>
<custom-transformer class="com.netbox.proxy.GetResponse" doc:name="GetResponse" encoding="UTF-8"/>
<logger level="INFO" doc:name="Logger"/>
</sub-flow>
<flow name="FLOW_App_service">
<http:listener config-ref="HTTP_Listener_Configuration_App_service" path="/*" allowedMethods="Get,Post" doc:name="HTTP" responseStreamingMode="ALWAYS">
<http:response-builder>
<http:header headerName="Access-Control-Allow-Origin" value="*"/>
<http:header headerName="Access-Control-Allow-Methods" value="POST,GET"/>
<http:header headerName="Access-Control-Allow-Credentials" value="true"/>
<http:header headerName="Content-Type" value="text/html; charset=utf-8"/>
</http:response-builder>
</http:listener>
<!--對應管綜網安網服務子系統TOMCAT位址例:http://IP:8080/ -->
<set-variable variableName="serviceUrl" value="http://192.168.2.234:8088/" doc:name="serviceUrl"/>
<set-variable variableName="charset" value="utf-8" doc:name="charset"/>
<set-variable variableName="serviceType" value="java" doc:name="serviceType"/>
<flow-ref name="send-get-app" doc:name="send-get"/>
<logger level="INFO" doc:name="Logger"/>
</flow>
< /mule>
服務端配置(内網)配置的是外網的兩個ftp和自己本地的臨時目錄用于取檔案和寫檔案:
<?xml version="1.0" encoding="UTF-8"?>
< mule xmlns:ftp=“http://www.mulesoft.org/schema/mule/ee/ftp” xmlns:file=“http://www.mulesoft.org/schema/mule/file”
xmlns=“http://www.mulesoft.org/schema/mule/core” xmlns:doc=“http://www.mulesoft.org/schema/mule/documentation”
xmlns:spring=“http://www.springframework.org/schema/beans” version=“EE-3.6.1”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd”>
< global-property name=“serviceRequestFilePath” value=“D:\temp\wangan\request” doc:name=“Global Property”>< /global-property>
< global-property name=“serviceResponseFilePath” value=“D:\temp\wangan\response” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.host.get” value=“192.168.2.222” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.port.get” value=“24” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.user.get” value=“shs1” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.password.get” value=“123456” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.host.send” value=“192.168.2.222” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.port.send” value=“21” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.user.send” value=“shs” doc:name=“Global Property”>< /global-property>
< global-property name=“server.ftp.password.send” value=“123456” doc:name=“Global Property”>< /global-property>
< flow name=“serverGetFileFromFTP”>
<ftp:inbound-endpoint host=" s e r v e r . f t p . h o s t . g e t " p o r t = " {server.ftp.host.get}" port=" server.ftp.host.get"port="{server.ftp.port.get}" responseTimeout=“10000” doc:name=“FTP” password=" s e r v e r . f t p . p a s s w o r d . g e t " u s e r = " {server.ftp.password.get}" user=" server.ftp.password.get"user="{server.ftp.user.get}" path="" pollingFrequency=“100” encoding=“UTF-8”>< /ftp:inbound-endpoint>
< set-property propertyName=“filename” value="#[message.inboundProperties[‘originalFilename’]]" doc:name=“filename”>< /set-property>
< /set-property>
< custom-transformer class=“com.netbox.proxy.DoHttpRequest” doc:name=“DoHttpRequest” encoding=“UTF-8”>< /custom-transformer>
< file:outbound-endpoint path="KaTeX parse error: Expected 'EOF', got '#' at position 82: …outputPattern="#̲[message.inboun…{serviceResponseFilePath}" responseTimeout=“10000” doc:name=“File” pollingFrequency=“100” encoding=“UTF-8”>< /file:inbound-endpoint>
<ftp:outbound-endpoint host=" s e r v e r . f t p . h o s t . s e n d " p o r t = " {server.ftp.host.send}" port=" server.ftp.host.send"port="{server.ftp.port.send}" responseTimeout=“10000” doc:name=“FTP” outputPattern="#[message.outboundProperties[‘filename’]]" password=" s e r v e r . f t p . p a s s w o r d . s e n d " u s e r = " {server.ftp.password.send}" user=" server.ftp.password.send"user="{server.ftp.user.send}" path="" encoding=“UTF-8”>< /ftp:outbound-endpoint>
< /flow>
< /mule>