首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骡子变压器

骡子变压器
EN

Stack Overflow用户
提问于 2015-03-18 16:43:38
回答 1查看 160关注 0票数 1

我用的是Mule 3.5我在前端标签中使用bean生成器转换器有问题。这是我的第一个测试:

代码语言:javascript
复制
<flow name="mule.activity">
<poll doc:name="Poll">
<fixed-frequency-scheduler frequency="10000"/>
<db:select config-ref="JSDB" doc:name="Database">
<db:parameterized-query><![CDATA[SELECT * FROM ACTIVITY WHERE rownum <= 6]]></db:parameterized-query>
</db:select>
</poll>
<foreach doc:name="For Each">
<logger message="start id #[payload.'ID']" level="DEBUG" category="mule.activity" doc:name="log" />
</foreach>

这是日志:

代码语言:javascript
复制
[2015-03-18 16:29:23,165] DEBUG: start id 1363230
[2015-03-18 16:29:23,165] DEBUG: start id 1363231
[2015-03-18 16:29:23,165] DEBUG: start id 1363232
[2015-03-18 16:29:23,165] DEBUG: start id 1363233
[2015-03-18 16:29:23,166] DEBUG: start id 1363236
[2015-03-18 16:29:23,166] DEBUG: start id 1363237

所以一切都很好。

现在,我在foreach标记中添加了一个bean构建器转换器:

代码语言:javascript
复制
<foreach doc:name="For Each">

<logger message="start payload: #[payload]" level="DEBUG" category="mule.activity" doc:name="log" />
<logger message="start id #[payload.'ID']" level="DEBUG" category="mule.activity" doc:name="log" />

<bean-builder-transformer beanClass="com.jsolutions.mule.IO">
<bean-property property-name="bean_prop_1" evaluator="map-payload" expression="TABLE_FIELD_1" optional="true" />
<bean-property property-name="bean_prop_2" evaluator="map-payload" expression="TABLE_FIELD_2" optional="true" />
... (map all query fields except ID)
</bean-builder-transformer>

<logger message="end payload: #[payload]" level="DEBUG" category="mule.activity" doc:name="log" />
<logger
message="end id #[payload.'ID']" level="DEBUG" category="mule.activity" doc:name="log" />

<!-- use the message in order to call a ws service -->
</foreach>

这是日志:

代码语言:javascript
复制
[2015-03-19 10:08:28,668] DEBUG: start payload: {FIELD_1=004369951, ID=1363230}
[2015-03-19 10:08:28,676] DEBUG: start id 1363230
[2015-03-19 10:08:28,684] DEBUG: end payload: com.jsolutions.mule.IO@67231ee8
[2015-03-19 10:08:28,687] DEBUG: end id null
[2015-03-19 10:08:28,688] DEBUG: start payload: {FIELD_1=004369951, ID=1363231}
[2015-03-19 10:08:28,688] DEBUG: start id null
[2015-03-19 10:08:28,690] DEBUG: end payload: com.jsolutions.mule.IO@2bc6e9f1
[2015-03-19 10:08:28,690] DEBUG: end id null
[2015-03-19 10:08:28,691] DEBUG: start payload: {FIELD_1=004369951, ID=1363232}
[2015-03-19 10:08:28,691] DEBUG: start id null
[2015-03-19 10:08:28,692] DEBUG: end payload: com.jsolutions.mule.IO@1028e3ab
[2015-03-19 10:08:28,692] DEBUG: end id null
[2015-03-19 10:08:28,693] DEBUG: start payload: {FIELD_1=TO3925878, ID=1363233}
[2015-03-19 10:08:28,693] DEBUG: start id null
[2015-03-19 10:08:28,694] DEBUG: end payload: com.jsolutions.mule.IO@6c7af7d6
[2015-03-19 10:08:28,695] DEBUG: end id null
[2015-03-19 10:08:28,695] DEBUG: start payload: {FIELD_1=TS7066322, ID=1363236}
[2015-03-19 10:08:28,695] DEBUG: start id null
[2015-03-19 10:08:28,697] DEBUG: end payload: com.jsolutions.mule.IO@7d253a3d
[2015-03-19 10:08:28,697] DEBUG: end id null
[2015-03-19 10:08:28,698] DEBUG: start payload: {FIELD_1=022245675, ID=1363237}
[2015-03-19 10:08:28,698] DEBUG: start id null
[2015-03-19 10:08:28,699] DEBUG: end payload: com.jsolutions.mule.IO@1712bafb
[2015-03-19 10:08:28,700] DEBUG: end id null

我不明白为什么在第一次迭代之后,id总是“空”.谢谢您的答复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 16:51:43

假设start有效载荷是一个映射(根据问题下的注释仍然是TBD ),使用以下表达式检索ID:

代码语言:javascript
复制
#[message.payload.ID]

实际上,尽管使用payload直接访问消息有效负载在大多数情况下都是有效的,但在某些不稳定的情况下,情况却并非如此。使用message.payload总是有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29127805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档