从 defaultMuleMessage 获取值
Get value from defaultMuleMessage
我正在尝试从 defaultMuleMessage 数据类型中提取一个值,但在 Mule 3.7.3 中无法获得正确的语法。谁能帮忙?
我试图获得的值在 Mule 调试器的变量选项卡中找到:
initialMessage (org.mule.DefaultMuleMessage)
-> properties (org.mule.MessagePropertiesContext)
--> inboundMap (org.mule.util.CopyOnWrite.CaseInsensitiveMap)
---> 7 (java.util.Collections$UnmodifiavleMap$UnmodifiableEntrySet$UnmodifiableEntry)
7 是关键=组织
如果我在调试器中输入 "initialMessage",我会收到:
org.mule.DefaultMuleMessage
{
id=6980b240-b882-11e6-85f7-d26120524153
payload=java.lang.String
correlationId=<not set>
correlationGroup=-1
correlationSeq=-1
encoding=UTF-8
exceptionPayload=<not set>
Message properties:
INVOCATION scoped properties:
_ApikitResponseTransformer_apikitRouterRequest=yes
_ApikitResponseTransformer_bestMatchRepresentation=application/json
_ApikitResponseTransformer_contractMimeTypes=[MimeType{type='application/json'}]
counter=1
deterministicOrchestration=true
initialMessage=<<<MuleMessage>>>
logLevel=INFO
maskingEnabled=true
messageFormat=JSON
messageLocation=CLIENT_REQUEST
mongoOperation=insert-object-from-map
mongoQuery={messageLocation=client_request, payload={NullPayload}}
mongoSynchronous=false
nextOrchestratedFlow=products-getProducts
orchestrationFlows=[products-getProducts]
prevResponse=''
INBOUND scoped properties:
accept=*/*
accept-encoding=gzip, deflate, peerdist
accept-language=en-GB
organization=abc
connection=Keep-Alive
host=localhost:8089
http.listener.path=/api/*
http.method=GET
http.query.params=ParameterMap{[]}
http.query.string=
http.remote.address=/127.0.0.1
http.request.path=/api/products
http.request.uri=/api/products
http.scheme=http
http.uri.params=ParameterMap{[]}
http.version=HTTP/1.1
referer=http://localhost:8089/api/console/
ua-cpu=AMD64
user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; managedpc; rv:11.0) like Gecko
x-p2p-peerdist=Version=1.0
x-requested-with=XMLHttpRequest
OUTBOUND scoped properties:
Content-Type=text/plain;charset=UTF-8
MULE_ENCODING=UTF-8
SESSION scoped properties:
country=usa
resource=products
}
我正在尝试检索 "organization=abc" 值。
谢谢
如果您想使用 MEL 从 mule 消息中获取入站 属性(例如称为 organization
),您只需:
#[message.inboundProperties.'organization']
根据我从问题中得到的信息和对上一个答案的评论。
您希望从 MuleMessage 获取入站 属性,MuleMessage 本身在您的流消息中作为 属性 可用。
尝试以下解决方案。
#[message.inboundProperties.'initialMessage'.getInboundProperty('organization')]
希望对您有所帮助。
试试这样,#[message.inboundProperties.organization]
由于 initialMessage 变量在 INVOCATION 范围内,请尝试以下操作:
#[message.getInvocationProperty('initialMessage').getInboundProperty('organization')]
更新:
#[message]
是 MessageContext 类型,因此您无法直接获取 Invocation 属性(只能从 MuleMessage 获取)。上面的表达式将不起作用。
更新 2:
试试下面的方法#[flowVars.initialMessage.getInboundProperty('organization')]
我正在尝试从 defaultMuleMessage 数据类型中提取一个值,但在 Mule 3.7.3 中无法获得正确的语法。谁能帮忙?
我试图获得的值在 Mule 调试器的变量选项卡中找到:
initialMessage (org.mule.DefaultMuleMessage)
-> properties (org.mule.MessagePropertiesContext)
--> inboundMap (org.mule.util.CopyOnWrite.CaseInsensitiveMap)
---> 7 (java.util.Collections$UnmodifiavleMap$UnmodifiableEntrySet$UnmodifiableEntry)
7 是关键=组织
如果我在调试器中输入 "initialMessage",我会收到:
org.mule.DefaultMuleMessage
{
id=6980b240-b882-11e6-85f7-d26120524153
payload=java.lang.String
correlationId=<not set>
correlationGroup=-1
correlationSeq=-1
encoding=UTF-8
exceptionPayload=<not set>
Message properties:
INVOCATION scoped properties:
_ApikitResponseTransformer_apikitRouterRequest=yes
_ApikitResponseTransformer_bestMatchRepresentation=application/json
_ApikitResponseTransformer_contractMimeTypes=[MimeType{type='application/json'}]
counter=1
deterministicOrchestration=true
initialMessage=<<<MuleMessage>>>
logLevel=INFO
maskingEnabled=true
messageFormat=JSON
messageLocation=CLIENT_REQUEST
mongoOperation=insert-object-from-map
mongoQuery={messageLocation=client_request, payload={NullPayload}}
mongoSynchronous=false
nextOrchestratedFlow=products-getProducts
orchestrationFlows=[products-getProducts]
prevResponse=''
INBOUND scoped properties:
accept=*/*
accept-encoding=gzip, deflate, peerdist
accept-language=en-GB
organization=abc
connection=Keep-Alive
host=localhost:8089
http.listener.path=/api/*
http.method=GET
http.query.params=ParameterMap{[]}
http.query.string=
http.remote.address=/127.0.0.1
http.request.path=/api/products
http.request.uri=/api/products
http.scheme=http
http.uri.params=ParameterMap{[]}
http.version=HTTP/1.1
referer=http://localhost:8089/api/console/
ua-cpu=AMD64
user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; managedpc; rv:11.0) like Gecko
x-p2p-peerdist=Version=1.0
x-requested-with=XMLHttpRequest
OUTBOUND scoped properties:
Content-Type=text/plain;charset=UTF-8
MULE_ENCODING=UTF-8
SESSION scoped properties:
country=usa
resource=products
}
我正在尝试检索 "organization=abc" 值。
谢谢
如果您想使用 MEL 从 mule 消息中获取入站 属性(例如称为 organization
),您只需:
#[message.inboundProperties.'organization']
根据我从问题中得到的信息和对上一个答案的评论。
您希望从 MuleMessage 获取入站 属性,MuleMessage 本身在您的流消息中作为 属性 可用。
尝试以下解决方案。
#[message.inboundProperties.'initialMessage'.getInboundProperty('organization')]
希望对您有所帮助。
试试这样,#[message.inboundProperties.organization]
由于 initialMessage 变量在 INVOCATION 范围内,请尝试以下操作:
#[message.getInvocationProperty('initialMessage').getInboundProperty('organization')]
更新:
#[message]
是 MessageContext 类型,因此您无法直接获取 Invocation 属性(只能从 MuleMessage 获取)。上面的表达式将不起作用。
更新 2:
试试下面的方法#[flowVars.initialMessage.getInboundProperty('organization')]