【问题标题】:read message from queue/topic in mule从 mule 中的队列/主题中读取消息
【发布时间】:2015-01-18 18:16:25
【问题描述】:

我想使用可以读取 JMS 消息的 Mule、ActiveMQ 来实现消费者类型的行为……有一些第三方队列/主题。需要订阅它们并开始收听。我怎样才能在骡子中实现这一目标?

【问题讨论】:

    标签: jms mule activemq


    【解决方案1】:

    按照this blog post 中的说明获取工作连接器。如果您使用的是 JMS1.1,您甚至不需要指定队列或主题,它们的行为将相同。如果您使用的是 1.0b,请确保指定正确的类型。

    然后,不要使用出站端点,而是使用入站端点:

    <jms:inbound-endpoint topic="myTopic" connector-ref="Active_MQ" />
    

    不过,我推荐使用Anypoint Studio,它会为您提供一个非常简单的界面来进行此类配置。

    【讨论】:

    • 嗨维克多....感谢您的回复...我看到了那个博客,但在那个博客中它只添加队列并将消息发布到该队列...我没有看到它消耗的部分.
    • 我们如何打印消息或检查它是否正在侦听该队列?因为当我进入“查看 cosnumers”时,什么都没有。
    • 如果你在一个独立的 Mule 上运行,你会在日志目录中找到名为 name-of-your-app.log 的日志。要打印到达的消息,只需在入站端点之后使用
    • 太棒了!如果您对它感到满意,请接受。
    【解决方案2】:

    要从 activemq 队列 ot 主题中读取消息,可以简单地放入您的流程中,例如:

    <flow name="insert-operation" doc:name="insert-operation" doc:description="">       
        <jms:inbound-endpoint connector-ref="Active_MQ" exchange-pattern="request-response" queue="insert-jms" doc:name="JMS">
            <idempotent-redelivery-policy idExpression="#[message.inboundProperties['JMSMessageID']]" />
            <xa-transaction action="ALWAYS_BEGIN" />
        </jms:inbound-endpoint>
    ...
    </flow>
    

    【讨论】:

    • message.inboundProperties['JMSMessageID'] 是什么?
    • JMSMessageID 是一个字符串值,用于唯一标识队列或主题中的消息。在此示例中,使用了事务,它可能与您的请求无关。
    • 您可以使用简单的流程,例如:
    猜你喜欢
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2014-04-14
    • 2013-10-22
    • 1970-01-01
    • 2022-01-04
    • 2018-02-05
    • 2010-09-19
    相关资源
    最近更新 更多