Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何根据Mule ESB中的where条件选择值_Json_Jdbc_Mule_Mule Studio_Mule El - Fatal编程技术网

Json 如何根据Mule ESB中的where条件选择值

Json 如何根据Mule ESB中的where条件选择值,json,jdbc,mule,mule-studio,mule-el,Json,Jdbc,Mule,Mule Studio,Mule El,我是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.muleso

我是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>
它不提供和回复

我期待着像下面这样的回应

 {"Body":{"Datalist":{"firstname":"ff","lastname":"ggg","id":"5"}},"Status":"200"}}
请帮我做这个

甚至logger语句也没有打印

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

非常感谢您的帮助。

我不能完全回答您的问题,但可以告诉您一些检查多信息的简单方法。 第一种也是最简单的方法是像这样放置脚本转换器:

<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

方案位置:

第二个选择和更难的一个将是创建自定义变压器。您需要创建一个java类,扩展AbstractMessageTransformer。然后调试您的项目,看看消息是什么
希望,这将有助于解决您所面临的全部问题。从这篇文章中我可以看出,几乎没有什么需要修改的地方

当您从selectquery中查找数据时,请更改JBDC:Outbound上的交换模式以请求响应

此外,在流的末尾也不需要使用。由于有效负载已在消息中可用,因此这是一条冗余语句

在记录器中,尝试使用[payload],因为从JBDC查询打印有效负载响应更简单

关于文档,MuleSoft网站是查找mule文档的最佳场所。他们有mule大部分内容的详细文档

希望这有帮助。

您可以更好地使用after http:inbound endpoint,并确保您是否从请求中获取id值,以及after payload after 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>

您可以从流中删除标记,当您使用如上所述的thanx设置响应有效负载时,实际上我希望从数据库中选择行,并使用json格式响应客户端,我可以做什么。根据您的建议,我需要遵循哪个流thanx进行回放我正在将消息导入流中,但无法传递接收到的客户端*消息服务:选择FromDbFlow1。内容是:“[{lastname=ff,*因此我将有效负载设置为如上所述,即使它没有传递给客户机*firstname=ff,id=5}]”*
<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>