0

私は の新人ですMuleESB。フローについてはよくわかりません。の適切なドキュメントが見つかりませんでしたMule。以下のコードを使用してデータベースからデータを取得しようとしていますが、データを取得できません。エラーは表示されないので、どうすればよいかわかりません。私の流れは正しいですか?

これが私のフロー構成です。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" 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.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="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
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/jdbc http://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">
    <jdbc-ee:postgresql-data-source name="PostgreSQL_Data_Source" user="youtilitydba" password="Youtility11" url="jdbc:postgresql://localhost:5432/sample" transactionIsolation="UNSPECIFIED" doc:name="PostgreSQL Data Source"/>
    <jdbc-ee:connector name="Database" dataSource-ref="PostgreSQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
    <flow name="selectfromdbFlow1" doc:name="selectfromdbFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="selectdb" doc:name="HTTP"/>
        <json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
        <jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="SELECT" queryTimeout="-1" connector-ref="Database" doc:name="Database">
            <jdbc-ee:query key="SELECT" value="select  firstname,lastname,id  from users where id =#[message.payload.id]"/>
        </jdbc-ee:outbound-endpoint>
        <response>
            <http:response-builder status="200" contentType="application/json" doc:name="HTTP Response Builder"/>
        </response>
        <set-payload value="#[payload]" doc:name="Set Payload"/>
                <echo-component doc:name="Echo"/>
            </flow>
</mule>

このようにcurlクライアントからリクエストを送信しています

curl -H "Content-Type: application/json" -d '{"id":"5"}' http://192.168.25.24:8081/selectdb

提供も応答もありません。

以下のような回答を期待しています。

 {"Body":{"Datalist":{"firstname":"ff","lastname":"ggg","id":"5"}},"Status":"200"}}

これを達成するのを手伝ってください。

ロガーステートメントでさえ印刷されていません

<logger message="message of payload#[message.payload]" level="INFO" doc:name="Logger"/>

どんな助けにも感謝します。

4

3 に答える 3

1

<json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>afterをより適切に使用しhttp:inbound-endpointて、リクエストから id 値を取得しているかどうかを確認し、db の後にペイロードを取得することができます

ここで、データベースからデータを取得していて、db を使用した後にロガーを使用して印刷できる場合

<logger message="message of payload #[message.payload]" level="INFO" doc:name="Logger"/>

次の方法で、クライアントへの応答を明示的に設定できます。

<http:response-builder status="200" contentType="application/json" doc:name="HTTP Response Builder">
    <set-payload value="#[message.payload]" doc:name="Set Payload"/>
</http:response-builder>

上記のよう<response/>に応答ペイロードを設定しているため、フローからタグを削除できます<http:response-builder/>

于 2015-07-04T12:05:40.420 に答える
0

あなたの質問に完全に答えることはできませんが、muleMessage を検査する簡単な方法をいくつか教えてください。最初の最も簡単な方法は、スクリプト トランスフォーマーを次のように配置することです。

<script:transformer>
               <script:script engine="groovy">
                   <script:text>
                       System.out.println(payload);
                       return payload;
                   </script:text>
               </script:script>
</script:transformer>

名前空間: xmlns:script="http://www.mulesoft.org/schema/mule/scripting"

スキーマの場所: http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd

2番目のオプションと難しいのは、カスタムトランスフォーマーを作成することです. Java クラスを作成し、AbstractMessageTransformer を拡張する必要があります。次に、プロジェクトをデバッグし、メッセージの希望を確認してください。これが役立ちます

于 2013-11-27T13:17:03.967 に答える