ActiveMQ作为Logstash的消息代理

扩展Logstash时,通常会添加一个消息代理,该消息代理用于在一个或多个Logstash节点处理传入消息之前临时缓冲传入的消息。 数据通过像Beaver这样的发运人推送到代理, Beaver读取日志文件并将每个事件发送到代理。 或者,应用程序可以使用Log4j附加程序之类的东西直接发送日志事件。

概观

一个常见的选择是将Redis用作将数据存储在内存中的代理 ,但也可以使用其他选项(例如Apache Kafka)。 有时,组织不那么热衷于引入很多新技术,并想重用现有商店。 ActiveMQ是一个广泛使用的消息传递和集成平台,它支持不同的协议,看起来非常适合用作消息代理。 让我们看看将其集成的选项。

设置ActiveMQ

ActiveMQ可以使用随附的脚本轻松设置。 在Linux上,只需执行./activemq console 。 使用http://127.0.0.1:8161/admin/上的管理控制台,您可以创建新的队列,甚至可以将消息排队以进行测试。

管理仪表板

使用AMQP消费消息

尝试将ActiveMQ连接到Logstash的一种明显方法是使用AMQP(高级消息队列协议) 。 这是不同消息平台所支持的标准协议。

AMQP曾经有一个Logstash输入,但不幸的是,由于RabbitMQ是受支持的主要系统,因此它已重命名为Rabbitmq-input 。

让我们看看如果尝试将输入与ActiveMQ一起使用会发生什么。

input {rabbitmq {host => "localhost"queue => "TestQueue"port => 5672}
}output {stdout {codec => "rubydebug"}
}

我们告诉Logstash在名为TestQueue的队列的标准端口上的localhost上侦听。 结果应转储到标准输出中。 不幸的是,Logstash仅发出错误,因为它无法连接。

Logstash startup completed
RabbitMQ connection error: . Will reconnect in 10 seconds... {:level=>:error}

在ActiveMQ日志中,我们可以看到我们的参数正确,但是不幸的是,两个系统似乎都说出了不同的AMQP方言。

WARN | Connection attempt from non AMQP v1.0 client. AMQP,0,0,9,1
org.apache.activemq.transport.amqp.AmqpProtocolException: Connection from client using unsupported AMQP attempted
...

不幸的是,这个选项。

使用STOMP消费消息

适当命名的“ 面向简单文本的消息传递协议”是ActiveMQ支持的另一个选项。 幸运的是有一个专用的输入 。 默认情况下,它不包含在Logstash中,但可以轻松安装。

bin/plugin install logstash-input-stomp

之后,我们可以在Logstash配置中使用它。

input {stomp {host => "localhost"destination => "TestQueue"}
}output {stdout {codec => "rubydebug"}
}

这次我们更好了:Logstash确实可以连接并将消息转储到标准输出。

bin/logstash --config stomp.conf 
Logstash startup completed
{"message" => "Can I kick it...","@version" => "1","@timestamp" => "2015-07-22T05:42:35.016Z"
}

使用JMS消费消息

尽管stomp-input可以工作,但还有一个尚未发布但可以测试的选项: jms-input支持Java Messaging System,这是在JVM上进行消息传递的标准方法。

当前,您需要自己构建插件(该插件在我的计算机上不起作用,但应由我过时的本地jruby安装引起)。

在ActiveMQ中获取数据

现在我们知道了从ActiveMQ消费数据的方法,现在该考虑如何获取数据了。使用Java时,您可以使用Log4j-或Logback -Appender之类的东西,这些东西使用JMS将日志事件直接推送到队列中。

不幸的是,在传输数据时,似乎没有哪个流行的解决方案能够将数据推送到ActiveMQ。 如果您知道可以使用的任何解决方案,那么请留下您的评论。

总而言之,我认为可以将ActiveMQ用作Logstash的代理,但是在传输数据时可能还需要做更多的工作。

翻译自: https://www.javacodegeeks.com/2015/08/activemq-as-a-message-broker-for-logstash.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在编译器中鼠标光标变成下横线的解决办法

适用于各种智能编译器,HB-X,VSCode,ST3,IDEA等。 问题: 按一下键盘上的,insert 键。

java自定义序列化_Java中的自定义国际化(i18n)

java自定义序列化国际化(i18n)在我们的软件项目中非常重要。 它主要带来以下好处: 将UI字符串外部化为代码文件以外的外部文件,以及易于管理的UI内容。 支持多种语言。 在这篇文章中,将为Eclipse和Java项目提供一个i…

让一个文字在背景图片水平居中的方法

最近工作中在做那个可视化大屏&#xff0c;图中用到了大量的装饰图片&#xff0c;下面看一下文字怎么在图片中水平居中。 这个方法比较好用&#xff0c;其他的方法嵌入太多可能不是特别好使&#xff0c;尤其嵌入到多个框架中。 html <!DOCTYPE html> <html><h…

Objective-C中,ARC下的 strong和weak指针原理解释

Objective-C中&#xff0c;ARC下的 strong和weak指针原理解释 提示&#xff1a;本文中所说的"实例变量"即是"成员变量"&#xff0c;"局部变量"即是"本地变量" 一、简介 ARC是自iOS 5之后增加的新特性&#xff0c;完全消除了手动管理内…

elementui去掉表格所有边框

/deep/.el-table {border: 0;th,tr,td{border: 0;background-color: #fff;}&::before {height: 0px;}&::after {width: 0;}.el-table__fixed:before {height: 0;}}

前端-html、css

HTML一、html简介超级文本标记语言是标准通用标记语言下的一个应用&#xff0c;也是一种规范&#xff0c;一种标准&#xff0c;它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件&#xff0c;通过在文本文件中添加标记符&#xff0c;可以告诉浏览器如…

在Java EE组件中使用骆驼路线

从现在开始我一直在与Camel合作&#xff0c;我真的很喜欢它的简单性。 在Java EE之上始终使用它一直是一个挑战&#xff0c;而我最近发表的有关如何做到这一点的演讲之一以及Java EE中引导Camel的不同方法实际上建议使用WildFly-Camel Subsystem 。 在正在进行的系列文章中&…

webpack入门

遇到问题首先到github项目的Issues中&#xff0c;检索一下相关问题&#xff0c;比在百度谷歌上直接搜索非官方解决方案好得多。 1、npm init 生成 package.json 2、npm i -D webpack 生成 # npm i -D 是 npm install --save-dev 的简写&#xff0c;是指安装模块并保存到 packa…

接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架

基于pythonTestlinkJenkins实现的接口自动化测试框架 by:授客 QQ&#xff1a;1033553122 博客&#xff1a;http://blog.sina.com.cn/ishouke 欢迎加入软件性能测试交流QQ群&#xff1a;7156436 目录 1、 开发环境... 1 2、 主要功能逻辑介绍... 1 3、 框架…

this的指向

箭头函数&#xff1a;定义时所在的作用域&#xff08;tip:继承而来 函数作用域 &#xff09; 普通函数&#xff1a;指向调用它的对象 箭头函数体内的 this对象&#xff0c;就是定义时所在的对象&#xff0c;而不是使用时所在的对象 1、箭头函数没有自己的this&#xff0c;ar…

事关每个程序员的职业规划与履历

今天&#xff0c;甚至过去&#xff0c;大多数人都是由自己来设计他们的职业生涯的。 无论你正要启程&#xff0c;还是已经奋斗多年&#xff0c;以下内容都会对您的职业生涯有所助益。 目录 几条重要的职业规划提示。 1. 学习的步伐不停止 2. 学会问、学会听&#xff0c;学会学习…

程序员应该如何规划自己的人生与书写履历?

今天,甚至过去,大多数人都是由自己来设计他们的职业生涯的。 无论你正要启程,还是已经奋斗多年,以下内容都会对您的职业生涯有所助益。几条重要的职业规划提示。1. 学习的步伐不停止 古人说,活到老,学到老。终身学习应该是您的座右铭。 世界在不断变化,每个人都在寻找各…

浅谈多线程——NSThread

上一篇文章中我们大致了解了GCD的模式和方法&#xff0c;在iOS开发中除了GCD之外&#xff0c;还有NSThread和NSOperation两种多线程方式。 1.NSThread - a - 使用NSThread开辟多线程进行子任务处理&#xff1a;类方法和初始化方法 使用类方法不需要创建对象就可以直接开辟多线程…

2021年程序员可以做哪些副业?

哈喽&#xff0c;大家好&#xff0c;我是孙叫兽&#xff0c;本期内容给大家分享程序员搞副业的一期节目&#xff0c;欢迎大家一起学习。 1.程序员为什么要做副业&#xff1f; 副业意味着自由 时至今日&#xff0c;仍然有一大群程序员还天真地认为从事副业是一种压迫。但事实是&…

学习Apache Camel –实时索引推文

在大多数软件开发项目中&#xff0c;有一点需要使应用程序开始与其他应用程序或第三方组件通信。 无论是发送电子邮件通知&#xff0c;调用外部api&#xff0c;写入文件还是将数据从一个地方迁移到另一个地方&#xff0c;您都可以推出自己的解决方案或利用现有框架。 对于Jav…

【坑】执行Consumer的时候发生java.net.UnknownHostException错误

【时间】&#xff1a; 2016/4/8 17:30 【问题】&#xff1a; kafka执行Consumer实例的时候&#xff0c;发生了一下错误。 kafka配置文件server.properties如下&#xff1a; zookeeper配置文件zoo.cfg内容如下&#xff1a; consumer的实现代码如下&#xff1a; 其中静态类的定义…

如何上架自己的应用到各大应用商店?

大家好&#xff0c;我叫孙叫兽&#xff0c;本期给大家分享的内容是如何上架自己的应用到应用商店&#xff0c;感谢大家的阅读&#xff01;1.上架各大应用商店需要准备哪些材料&#xff1f;上架各大安卓应用商店&#xff08;腾讯应用宝、阿里应用商店、百度手机助手、华为应用市…

时间复杂度和空间复杂度[数据结构]

參考&#xff1a;本文为小甲鱼教学视频的学习笔记。 1、为什么要学习时间复杂度和空间复杂度&#xff1f;你说一个算法好另外一个算法不好&#xff0c;有什么推断根据&#xff1f;哪个算法效率高&#xff1f;怎么推断&#xff1f;那么就要学习时间和空间复杂度了。思考&#xf…

js编码解码decodeURI()与decodeURIComponent()的区别

区别&#xff1a; encodeURIComponent()对/?:&$,#进行编码&#xff0c;encodeURI()不会 如果url的query和path传参中含有这些字符会被不正确的截断&#xff0c;拿到的参数会是错误的&#xff0c;一般都会用encodeURIComponent()进行编码、decodeURIComponent进行解码 en…

gitlab将分支代码合并到master上

1、首先在test分支上进行git add .git commit -m "test"git push 2、切换到master上git checkout mastergit merge test git push