Как вернуть клиенту настраиваемый ответ с помощью Mule ESB

Я новичок в mule esb, но я знаю другие шаблоны ESB. Моя проблема в том, что я сделал образец, который будет вставлять данные в БД. Он работает нормально, но не дает никакого ответа клиенту, поэтому клиент ничего не получает от сервера. мой пример кода является

<mule xmlns:json="http://www.mulesoft.org/schema/mule/json"
    xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc"
    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.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/jdbc http://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.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
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">

<jdbc-ee:postgresql-data-source name="PostgreSQL_Data_Source" user="youtilitydba" password="45782dfff1" 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="insertintoDBFlow1" doc:name="insertintoDBFlow1">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" path="httpPost"/>
        <logger message="log about input message: #[payload]" level="INFO" doc:name="Logger"/>

                <json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.Map"></json:json-to-object-transformer>

        <jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="INSERT_TOKEN" queryTimeout="-1" connector-ref="Database" doc:name="Database">
            <jdbc-ee:query key="INSERT_TOKEN" value="insert into users(FirstName,lastname) values(#[message.payload.name],#[message.payload.id]);"/>
        </jdbc-ee:outbound-endpoint>
    </flow>

</mule>

и я вызываю это, используя пример клиента JSON, подобный этому

curl -H "Content-Type: application/json" -d '{"name":"kk","id":"anil"}' http://localhost:8081/httpPost

когда я запускаю этот json, он ничего не отвечает, но я хочу дать такой ответ {"ResponseJSON":{"Body":{"Datalist":{"Data":"Successfully Rows inserted"}},"Status":"200"}}

как бы я отформатировал этот формат выше, я использовал http response builder, но ничего не поделаешь..


person faisal shaik    schedule 27.11.2013    source источник


Ответы (1)


вам нужно добавить компонент Echo, установить значение полезной нагрузки, которое вы ищете, и добавить построитель ответов HTTP с помощью status="200" и contentType="application/json".

Добавьте следующие строки после </jdbc-ee:outbound-endpoint> и перед </flow>

<response>
        <http:response-builder status="200" contentType="application/json" doc:name="HTTP Response Builder"/>
    </response>
    <response>
        <set-payload value="{&quot;Body&quot;:{&quot;Datalist&quot;:{&quot;Data&quot;:&quot;Successfully Rows inserted&quot;}},&quot;Status&quot;:&quot;200&quot;}}" doc:name="Set Payload"/>
    </response>
    <echo-component doc:name="Echo"/>

Ваше здоровье,

-Марко.

person Marco Tello    schedule 27.11.2013
comment
Спасибо за тонну .. я новичок в этом, предложите мне выбрать данные, как я могу сделать полезную нагрузку для выбора - person faisal shaik; 27.11.2013
comment
как мы можем регистрировать сообщения в muleesb, как java sop.i сделали так, правильно ли это r нет ‹logger message=#[message.payload] level=INFO doc:name=Logger/› - person faisal shaik; 27.11.2013
comment
Это будет работать. Даже #[payload] будет работать для печати полезной нагрузки в сообщении мула. - person user1760178; 27.11.2013
comment
Попробуйте следующее: ‹уровень регистратора=INFO doc:name=сообщение регистратора=#[payload:java.lang.String]/› - person Marco Tello; 27.11.2013