从 mule 中的队列/主题中读取消息

Posted

技术标签:

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

我想使用可以读取 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 是一个字符串值,用于唯一标识队列或主题中的消息。在此示例中,使用了事务,它可能与您的请求无关。 您可以使用简单的流程,例如:

以上是关于从 mule 中的队列/主题中读取消息的主要内容,如果未能解决你的问题,请参考以下文章

Mule 请求者正在使用 JMS 队列中的所有消息

如何在 Mule 4 中通过 ActiveMQ 传递属性

我可以存储和读取来自 STOMP 队列/主题的消息吗?

从 node.js 中的消息队列中读取消息

使用 Mule 重新排队 JMS 请求

ActiveMQ之队列和主题发布订阅实例