передача данных из очереди на мыльный сервер с использованием Apache Camel - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть JSON в очереди: {"user":'Alex', "times": 34}.Я хочу из этих данных отправить запрос на мыло на сервер

WSDL:

wsdl

мой маршрут:

<route>
    <from uri="rabbitmq://10.0.62.201/exchange1?queue=from-lanbilling" />
    <to uri="cxf://http://0.0.0.0:8000?wsdlURL=http://localhost:8000/?wsdl" />
    <log message="message ${body}" />
</route>

как я могу преобразовать данные JSON из очереди для запроса мыла?

ОБНОВЛЕНИЕ

Мне пришлось использовать camel-http с принудительной строкой soap-xml:

план:

<camelContext
    xmlns="http://camel.apache.org/schema/blueprint">

    <route>
        <from uri="rabbitmq://10.0.62.201/exchange1?queue=from-lanbilling" />
            <process ref="jTos" />      
            <log message="message ${body}" />
        <!--  <to uri="cxf://http://0.0.0.0:8000?dataFormat=PAYLOAD" />  -->
                    <setHeader headerName="Content-Type">
            <constant>application/xml; charset=utf-8</constant>
        </setHeader>
        <to uri="http://0.0.0.0:8000"/>
        <log message="message ${body}" />
    </route>


</camelContext>

JsonToSoap:

public class JsonToSoap implements Processor {

public void process(Exchange exchange) throws Exception {

    String json = exchange.getIn().getBody(String.class);
    JSONObject obj = new JSONObject(json);

    String name = obj.getString("name");
    Integer timer = obj.getInt("timer");

    String soap_xml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:spy=\"spyne.examples.hello\">\r\n" + 
            "   <soapenv:Header/>\r\n" + 
            "   <soapenv:Body>\r\n" + 
            "      <spy:say_hello>\r\n" + 
            "         <spy:name>" + name +"</spy:name>\r\n" + 
            "         <spy:times>" + timer + "</spy:times>\r\n" + 
            "      </spy:say_hello>\r\n" + 
            "   </soapenv:Body>\r\n" + 
            "</soapenv:Envelope>";


    exchange.getOut().setBody(soap_xml);


}
}

как мне сделать то же самое только через camel-cxf?Я думаю, что есть более элегантное решение.

1 Ответ

0 голосов
/ 22 февраля 2019

Проверьте AtlasMap!(https://atlasmap.io) имеет компонент Camel. Он поддерживает преобразование данных в и из объектов XML, JSON и Java.

Отказ от ответственности: я создал AtlasMap

...