Как проверить тип контента = JSON в 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 и отображать сообщение в журнале ...


person Anirban Sen Chowdhary    schedule 13.07.2014    source источник


Ответы (1)


Вы все еще можете использовать is-json-filter, но вам нужно обернуть его в фильтр сообщений, чтобы вы могли контролировать путь «else»:

<message-filter onUnaccepted="noJsonFlow" throwOnUnaccepted="false">
  <json:is-json-filter />
</message-filter>
person David Dossot    schedule 13.07.2014
comment
где я должен поместить сообщение регистратора? - person Anirban Sen Chowdhary; 13.07.2014
comment
Доступен ли этот компонент в версии 3.9? Я не мог найти его. - person Chidambaram Palaniappan; 02.10.2019