簡體   English   中英

如何在Mule中驗證content type = JSON

[英]How to validate content type=JSON in Mule

我有一個Mule配置,其中有2個流:-一個流公開REST服務:-

<flow name="restServiceFlow1" doc:name="restFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP"/>
        <jersey:resources doc:name="REST">
            <component class="com.test.services.schema.maindata.v1.Impl.MainDataImpl"/>
        </jersey:resources>
 </flow>

另一個流程通過文件入站放置JSON請求來消耗服務:-

<flow name="restFlow2">
  <file:inbound-endpoint path="E:\backup\test" responseTimeout="10000" connector-ref="File_Global">
    <file:filename-regex-filter pattern="aa.txt" caseSensitive="false"/>
  </file:inbound-endpoint>

  <json:json-to-object-transformer returnClass="java.util.HashMap"/>

  <foreach collection="#[payload.insertDataRequest]">
    <http:outbound-endpoint exchange-pattern="request-response"
          contentType="application/json" method="GET"
          address="http://localhost:8082/getData/insert/?id=#[payload.id]&amp;name=#[payload.name]&amp;age=#[payload.age]&amp;designation=#[payload.designation]"/>
  </foreach>
</flow>

現在要求在文件入站終結點之后檢查內容類型,是否內容類型為JSON ...如果內容類型不等於JSON,則它將在日志中不顯示JSON消息。

我嘗試了以下操作:-我在文件入站端點之后放置了一個選擇路由器:-

<when evaluator="groovy" expression="payload.ContentType=='JSON'"> 

檢查內容類型的有效載荷,如果內容類型不是JSON,它將在日志中不顯示JSON,因此我將日志放置在默認的選擇路由器中...但是我遇到了以下異常:-

Exception stack is:
1. No such property: ContentType for class: org.mule.transport.file.ReceiverFileInputStream (groovy.lang.MissingPropertyException)
  org.codehaus.groovy.runtime.ScriptBytecodeAdapter:50 (null)
2. groovy.lang.MissingPropertyException: No such property: ContentType for class: org.mule.transport.file.ReceiverFileInputStream (javax.script.ScriptException)
  org.codehaus.groovy.jsr223.GroovyScriptEngineImpl:323 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/script/ScriptException.html)

現在,有什么更好的方法可以在文件入站端點之后檢查內容類型了嗎? 請提出一些更好的方法...請注意,我不想使用is-json-filter因為我想控制else條件並在日志中顯示消息...

您仍然可以使用is-json-filter但是需要將其包裝在消息過濾器中,以便可以控制“ else”路徑:

<message-filter onUnaccepted="noJsonFlow" throwOnUnaccepted="false">
  <json:is-json-filter />
</message-filter>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM