使用Mule MongoDB连接器,如何将字段存储为BinData类型?
<mongo:insert-object-from-map collection="#[variable:collectionName]">
<mongo:element-attributes>
<mongo:element-attribute key="msg_id">BinData(3, '#[message:id]')</mongo:element-attribute>
<mongo:element-attribute key="shortcode">#[map-payload:shortcode]</mongo:element-attribute>
<mongo:element-attribute key="msg">#[map-payload:msg]</mongo:element-attribute>
</mongo:element-attributes>
</mongo:insert-object-from-map>
上面我尝试过的这个例子只存储字符串“BinData(3,'eea894d1-b0b5-11e1-91c7-a769a8d50370')”
这可能吗?
答案 0 :(得分:0)
您可以使用Groovy创建对象
<mongo:element-attribute key="msg_id">#[groovy:new BinData(3, payload.getUniqueId())]</mongo:element-attribute>
这可能不会起作用,因为MongoDB驱动程序将无法convert the object,但可以使用Groovy来创建BasicDBObject to create the data that you store。
答案 1 :(得分:0)
我实际上完全放弃了Mule MongoDB连接器,因为它不可靠并且在重负载下失败。这篇文章解释了为什么它失败如此悲惨 - http://www.thorntech.com/2012/07/mule-mongo-connector-fails-under-heavy-load/
编写使用标准java驱动程序的自己的Mule组件非常容易。它表现得更好,我没有问题保存我想要的任何数据类型。