从 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 的日志。要打印到达的消息,只需在入站端点之后使用要从 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 中的队列/主题中读取消息的主要内容,如果未能解决你的问题,请参考以下文章