我有一个带ID,NAME,DATE的MySql数据库我想通过使用dblookup中介获取这些行,似乎没有用,有人可以检查我的代理定义吗?
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Database" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<dblookup>
<connection>
<pool>
<password>1234</password>
<user>root</user>
<url>jdbc:mysql://localhost:3306/new_db</url>
<driver>com.mysql.jdbc.Driver</driver>
</pool>
</connection>
<statement>
<sql>select * from users where name=?</sql>
<result name="client_expiration" column="expiration" />
<result name="client_id" column="id" />
<result name="client_name" column="name" />
</statement>
</dblookup>
<log />
</inSequence>
</target>
</proxy>
答案 0 :(得分:3)
检索多个数据时出现问题。如果我们尝试检索多个数据,它将返回第一行数据。返回的值将存储在synapse Messagecontext中。所以,如果您只是使用日志调解器,您将无法查看结果。 像这样使用;
像这样更改你的sql查询(检索一行数据)
<sql>select * from users where name=ABC</sql>
然后像这样记录;
<log level="custom">
<property name="returned value for client_expiration is : " expression="get-property('client_expiration')"/>
<property name="returned value for client_id is : " expression="get-property('client_id')"/>
<property name="returned value for client_name is : " expression="get-property('client_name')"/>
</log>