如何在定期间隔后重新连接JMS连接器

时间:2017-04-24 09:53:12

标签: mule mule-studio mule-component

要求: - 具有Oracle AQ作为入站端点的JMS连接器。

问题陈述: - 如何在定期间隔后重新连接JMS连接器,以便在重新连接时消耗队列中的新消息。

我尝试了以下重新连接策略

-- JMS Connector defined
        <jms:connector name="AQJMS" validateConnections="true"
            maxRedelivery="-1" numberOfConsumers="1" durable="true" doc:name="JMS"
            username="X" password="X" connectionFactory-ref="OAQTopicConnectionFactoryBean">
-- reconnect at 5 sec
            <reconnect-forever frequency="5000"/>
        </jms:connector>
-- flow
        <flow name="sendmessagetoqFlow">
-- jms inbound endpoint as oracle AQ
            <jms:inbound-endpoint queue="QUEUE"
                connector-ref="AQJMS" doc:name="AQJMS">
                <jms:client-ack-transaction action="BEGIN_OR_JOIN"/>
            </jms:inbound-endpoint>
            <logger message="Log 1 - #[message.inboundProperties]" level="INFO" doc:name="Logger 1"/>
        </flow>

但它在5秒后没有重新连接。     你能帮我解决一下这个问题。

先谢谢。

1 个答案:

答案 0 :(得分:0)

配置事务轮询(企业) 这对我有用

    <jms:connector ...cut...>
         <service-overrides transactedMessageReceiver="com.mulesoft.mule.transport.jms.TransactedPollingJmsMessageReceiver" />
    </jms:connector>

    <jms:inbound-endpoint queue="my.queue">
 <ee:multi-transaction action="ALWAYS_BEGIN" timeout="30000"/>
         <properties>
              <spring:entry key="pollingFrequency" value="5000" /> 
         </properties>
    </jms:inbound-endpoint>