【问题标题】:How to reconnect a JMS connector after a regular interval如何在定期间隔后重新连接 JMS 连接器
【发布时间】:2020-09-21 15:33:42
【问题描述】:

要求:- 以 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 秒后没有重新连接。 你能帮我解决这个问题吗?

提前致谢。

【问题讨论】:

  • jms 入站端点会在消息可用时立即接收。不需要像使用数据库那样轮询队列。
  • 我期待与您解释的结果相同,但使用代码 sn-p 我没有得到结果,假设应用程序正在 mule studio 中运行并且我在后端队列中插入一条消息该消息在我重新启动请求者(jms 入站端点)之前不会消耗。
  • 我使用 ActiveMQ 测试了您的配置,因为我的系统中没有 Oracle AQ,并且我在后端插入了来自 ActiveMQ 门户的消息,发现它可以正常工作。我还通过断开 ActiveMQ 服务器测试了连接。我发现 ActiveMQ 一切正常

标签: mule mule-studio mule-component


【解决方案1】:

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

    <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>

【讨论】:

  • 我在 jms 连接器中添加了以下代码, 并将交易类型更改为jms 端点中的多资源事务,现在它正在工作,但在使用来自队列异常的消息后抛出 JMS-131:会话已关闭
猜你喜欢
  • 2021-03-31
  • 2019-01-07
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多