读取与从 JMS 队列复制消息..使用 logstash 到 ES

Posted

技术标签:

【中文标题】读取与从 JMS 队列复制消息..使用 logstash 到 ES【英文标题】:Read vs Copy a message from JMS queue..using logstash into ES 【发布时间】:2014-01-09 02:13:53 【问题描述】:

有时,我们发现需要从 JMS 队列中读取 msg 的“副本”并将其存储在数据存储中(例如 ElasticSearch)。 在企业环境中,当 System-A 通过 JMS 队列向 System-B 发送 XML msg 时,如果另一个 System-C 可以探测并读取 msg 的副本(在读取后不将其从 JMS 队列中删除,而只是读取副本的味精) 并将其存储以供审核/搜索/分析,例如。在 ElasticSearch 数据存储中。然后我们可以在 Elasticsearch 之上使用 Kibana 对数据进行审计/搜索分析。

所以问题是——我们可以使用 Logstash 或 logstash 插件来读取 JMS 消息,但不能只读取消息的副本。有没有办法做到这一点?

logstash-plugin --> 读取frm JMS队列 --> 发送到ES --> 使用Kibana分析来自ES的数据。

【问题讨论】:

【参考方案1】:

如果您使用 JMS 主题而不是队列,您可以将消息写入主题并让系统 B 和系统 C 订阅和使用消息。

见:

JMS Topic vs Queues

How to "copy" a JMS message to 2 destinations?

更新:与原始海报交谈后,他们无法将架构移至主题,因此我建议使用复合/虚拟目的地。

http://activemq.apache.org/composite-destinations.html

http://activemq.apache.org/virtual-destinations.html

【讨论】:

以上是关于读取与从 JMS 队列复制消息..使用 logstash 到 ES的主要内容,如果未能解决你的问题,请参考以下文章

Flume 读取JMS 消息队列消息,并将消息写入HDFS

SOA 组合未从 JMS 队列中读取

发送到JMS队列的消息将仅由单个消费者使用?

模拟或模拟消息队列 (JMS)

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

从JMS到KafKa