如何使用Mule MongoDB Connector存储BinData字段?

时间:2012-06-07 15:36:24

标签: mongodb mule

使用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')”

这可能吗?

2 个答案:

答案 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组件非常容易。它表现得更好,我没有问题保存我想要的任何数据类型。