JMS事务中的VM持久出站端点

时间:2014-06-17 07:25:47

标签: transactions jms mule

我试图通过从JMS队列获取消息并以事务方式将其放入VM持久性队列来实现可靠性模式。重点是确保消息存储在VM队列中(稍后进行异步处理)或根本不从JMS队列中消耗。

这是我的相关配置部分。

<vm:connector name="asyncDbConnector">
    <default-persistent-queue-store/>
</vm:connector>

<endpoint name="asyncDbEndpoint" address="vm://asyncDb" connector-ref="asyncDbConnector" exchange-pattern="one-way"/>

<flow name="jsmInFlow">
    <jms:inbound-endpoint ref="jmsInEndpoint">
        <jms:transaction action="ALWAYS_BEGIN"/>
    </jms:inbound-endpoint>

    <logger message="In jsmInFlow: #[message.payload]"/>

    <outbound-endpoint ref="asyncDbEndpoint" exchange-pattern="one-way"/>
</flow>

<flow name="asyncDbFlow">
    <vm:inbound-endpoint ref="asyncDbEndpoint">
        <vm:transaction action="ALWAYS_BEGIN"/>
    </vm:inbound-endpoint>

    <logger message="In asyncDbFlow: #[message.payload]"/>

    ...
</flow>

使用这样的配置我得到&#34; Endpoint是事务性的,但事务不支持它&#34;。据我所知,它试图同步执行asyncDbFlow并加入现有的事务,但JMS事务不支持VM事务。相反,如果排队失败,我需要它可靠地排队消息并回滚JMS事务。骡子有可能吗?

0 个答案:

没有答案