【问题标题】:Mule Publish/Subscribe model with Active-MQ. How to invoke tomcat-consumers in asynchronously manner upon arriving message in Active-MQ JMS带有 Active-MQ 的 Mule 发布/订阅模型。如何在 Active-MQ JMS 中的消息到达时以异步方式调用 tomcat-consumers
【发布时间】:2014-09-23 19:19:43
【问题描述】:

如何使用 Active-MQ 实现 JMS 发布/订阅模型。我有一个所有消息都来的入站 JMS Active-MQ 队列/主题。另一方面,我有几个出站消费者(Tomcat-Http)。我想以这样一种方式实现发布/订阅模型,一旦我在 Active-MQ 中收到一条消息,它就会以异步方式调用所有 tomcat 消费者。

有没有办法在 Mule 中实现上述模型?

【问题讨论】:

    标签: tomcat asynchronous jms mule


    【解决方案1】:

    为此使用流程:

    <flow name="amq2http">
      <jms:inbound-endpoint queue="yourQueue" />
      <http:outbound-endpoint address="http://whatever.url" />
    </flow>
    

    当然,你需要配置ActiveMQ连接器:

    <jms:activemq-connector name="jmsConnector" brokerURL="tcp://localhost:61616"/>
    

    阅读以下链接了解更多信息:

    【讨论】:

    • 完美它工作正常。有什么方法可以在 Active-MQ 队列中保留消息?因为如果我的 http:outbound-endpoint(Tomcat) 出现故障/崩溃,则无法处理该请求。
    • 是的,在这种情况下,您需要转换地使用消息,以便 HTTP 错误回滚传递,从而触发后续重新传递。在此处阅读有关可靠性模式的信息:mulesoft.org/documentation/display/current/Reliability+Patterns
    • David,只要您想以同步方式实现,可靠性是一个很好的解决方案。如博客中所述,它仅支持同步流。
    • 我想以异步方式解决我的问题。我想实现类似fire and forgot之类的东西。我想异步调用/触发 http-tomcat。我认为的解决方案之一是将消息存储在两个 JMS 队列中,一旦处理来自 queue-1 的消息,然后也从 queue-2 中删除。如果任何情况下应用程序崩溃,那么队列 2 中的消息仍然可用,我们可以对其进行处理。但是这种方法相当昂贵,效率也不高。如果有什么方法可以在消息被消费后将其保留在队列中,那么我们可以在它被处理后将其删除。有什么想法吗?
    • 在这种情况下,使用 until-successful 元素包装 HTTP 端点。默认情况下它是异步的,将负责重试。这不会将消息留在队列中,而是 Mule 提供的执行您想要的操作的方式。
    猜你喜欢
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多