2016-02-05 2 views
1

Я пытаюсь получить IP клиента и сокет UDP-пакета и сохранить его в переменной Flowvar используя код MELКак получить IP-адрес клиента из UDP-транспорта в Mule ESB?

#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS] 

Однако этот переменный всегда нулевой, я был в состоянии сделать его работу на TCP-транспорте кто-нибудь знает, как получить адрес удаленного клиента в UDP?

Это мой XML-файл:

<mule xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:udp="http://www.mulesoft.org/schema/mule/udp" 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" 
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/udp http://www.mulesoft.org/schema/mule/udp/current/mule-udp.xsd 
http://www.mulesoft.org/schema/mule/amqp http://www.mulesoft.org/schema/mule/amqp/current/mule-amqp.xsd"> 
<udp:connector name="UDP" validateConnections="true" keepSendSocketOpen="true" doc:name="UDP" broadcast="true"/> 
<flow name="udpFlow"> 
<udp:inbound-endpoint exchange-pattern="one-way" host="172.22.20.103" port="4040" connector-ref="UDP" responseTimeout="10000" doc:name="UDP" metadata:id="9260547c-3b58-4ebd-953e-fd3e7bb063f3"/> 
<object-to-string-transformer doc:name="Object to String"/> 
<set-variable variableName="source" value="#[message.inboundProperties.MULE_REMOTE_CLIENT_ADDRESS]" metadata:id="6a72ad72-167f-44da-9f3d-75143c5c0a2f" doc:name="Variable"/> 
<set-payload value="#[flowVars.source] dice #[payload]" doc:name="Set Payload"/> 
<echo-component doc:name="Echo"/> 
</flow> 
</mule> 

UPDATE: я решить вопрос Адрес с кодом MEL

#[message.inboundProperties['packet.address']]: #[message.inboundProperties['packet.port']] 

Благодаря Дэвиду Dossot за его помощь.

+0

Не благодарите меня, я не понимаю, что 'udp' префикс не добавлялся к' имени packet.address' собственности, как это обычно бывает на других другой транспорты, и дал вам неправильное имя. Вы решили это самостоятельно :) –

ответ

0

Использование:

#[message.inboundProperties['packet.address']] 
+0

Все еще возвращает null ... Где вы нашли свойство 'udp.packet.address'? он не отображается в проводнике DataSense – Gaven

+0

. Здесь: https://github.com/mulesoft/mule/blob/mule-3.x/transports/udp/src/main/java/org/mule/transport/udp/ UdpMuleMessageFactory.java # L51 –

+0

Я не могу понять, как UdpMuleMessageFactory.java связан с свойством 'udp.packet.address', однако, если я попробую создать имя свойства, я получаю тот же нулевой результат, поэтому я думаю, 'udp .packet.address 'не существует как свойство. Проверяя UdpMessageReceiver.java, я понимаю, что в методе run() создается свойство MULE_REMOTE_CLIENT_ADDRESS. Кажется, что это ошибка – Gaven