Mule 获取消息入站属性
我在获取消息入站属性时遇到问题,不知何故,它的值为null,下面是代码:Mule 获取消息入站属性,mule,Mule,我在获取消息入站属性时遇到问题,不知何故,它的值为null,下面是代码: <scripting:transformer name="noopLoggingTransformer"> <scripting:script engine="groovy"> log.info "${message.getInboundProperty('user-agent')}" muleContext.client.dispatch('vm://log
<scripting:transformer name="noopLoggingTransformer">
<scripting:script engine="groovy">
log.info "${message.getInboundProperty('user-agent')}"
muleContext.client.dispatch('vm://log-request.in', message)
message
</scripting:script>
</scripting:transformer>
<pattern:web-service-proxy name="service" transformer-refs="noopLoggingTransformer" inboundAddress="${serverName}/services/Logradouros/LogradouroServico" outboundAddress="${targetServer}/servicos/v2/service.svc" wsdlFile="LogradouroServicos.wsdl">
</pattern:web-service-proxy>
<jdbc-ee:postgresql-data-source name="WSA" user="${database.user}" password="${database.pass}" url="${database.url}" transactionIsolation="UNSPECIFIED" doc:name="PostgreSQL Data Source">
</jdbc-ee:postgresql-data-source>
<jdbc-ee:connector name="jdbcConnector" dataSource-ref="WSA" validateConnections="false" transactionPerMessage="true" queryTimeout="10" pollingFrequency="10000" doc:name="JDBC">
<jdbc-ee:query key="wsadb" value="insert into inbound_messages (payload, timestamp, agent, ip_from, endpoint, soap_operation) values ('', now(), #[groovy: return message.getInboundProperty('user-agent').toString()], #[groovy: return message.getInboundProperty('MULE_REMOTE_CLIENT_ADDRESS').toString()], #[groovy: return message.getInboundProperty('http.request').toString()], '');"></jdbc-ee:query>
</jdbc-ee:connector>
<flow name="log-request" doc:name="log-request">
<vm:inbound-endpoint path="log-request.in" />
<logger message="#[message.inboundProperties['user-agent']]" level="INFO" doc:name="Logger"/>
<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="wsadb" responseTimeout="10000" queryTimeout="-1" connector-ref="jdbcConnector" doc:name="Persist raw message" />
</flow>
log.info“${message.getInboundProperty('user-agent')}”
muleContext.client.dispatch('vm://log request.in',message)
消息
它打印出来的是“null”,我不知道如何让它从消息打印属性…无需使用Groovy:
<logger message="#[message.inboundProperties['user-agent']]" level="INFO" doc:name="Logger"/>
当然,您可以迭代入站属性名称来复制它们。属性名称是
User-Agent
,正如David指出的,#message.inboundProperties['User-Agent']
是获取它的MEL
方法
当您试图访问mule消息时,是否确保在该消息上设置了User Agent
属性。它并不总是在那里
请记住,入站
属性不会传播,除非您像通过那样手动复制属性
是的,我刚刚发现它们从()改为[]+还有一些事情,再次感谢你David:)如果我登录到transformer,使用MEL和all可以很好地工作,但是当我尝试访问流中的属性时,它显示为null。。。但是我可以打印#[message.payload]例如…@JaderWallauer你是说这个打印#message.inboundProperties['User-Agent']]
很好?不,我说的是如果你在转换器内部打印,你会得到属性,但不会在流中,请查看代码。在流中,您只会以某种方式获得null…因为入站属性不会传播到出站范围
<scripting:transformer name="noopLoggingTransformer">
<scripting:script engine="groovy">
def props = [:]
props['User-Agent'] = message.getProperty('User-Agent', org.mule.api.transport.PropertyScope.INBOUND)
muleContext.client.dispatch('vm://log-request.in', payload, props)
message
</scripting:script>
</scripting:transformer>