首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消息队列实现

消息队列实现
EN

Stack Overflow用户
提问于 2012-05-22 18:27:14
回答 3查看 1K关注 0票数 2

我正在寻找最快的方法来记录消息,而不需要生产者在发送日志时连接到任何服务器。最好的情况就是快速地将消息记录到本地(内存、本地消息队列),然后退出。然后,一个单独的进程将其出队,并将其发送给实际的使用者(可能使用持久连接)。这有助于通过防止额外的连接来降低生产者进程(例如web服务器句柄)的处理速度。

我会对使用PHP的RabitMQ感兴趣吗?

EN

回答 3

Stack Overflow用户

发布于 2013-04-14 04:13:04

Logstash (http://www.logstash.net/)在您选择的本地日志文件上设置侦听器,然后通过AMQP (RabbitMQ,我上一次检查是在2012年)将它们作为消息发送到您选择的中央日志存储/数据库(例如,mongoDB实例)。

您可以自定义Logstash侦听器,以便在将日志文件发送到队列代理之前,只从日志文件中筛选出某些有趣的日志消息类型/代码。

在此之后,您可以将Graylog2 (http://graylog2.org/)设置为一个有用的界面,用于读取、排序和过滤来自所有服务器的日志,这些日志按时间顺序组织在一个视图中(假设您的服务器时间足够同步)。

票数 1
EN

Stack Overflow用户

发布于 2012-05-22 20:08:15

正如@robthewolf在他的评论中指出的那样,连接到消息队列是一个额外的连接,无论是本地的还是非本地的。另外,我不确定你所说的“处理”到底是什么意思(格式化消息?显示日志?)。

从你的描述来看,我认为你应该研究一下Graylog。您可以使用MonologGelf-PHP通过AMQP将日志消息发送到您的Graylog-Server。

票数 0
EN

Stack Overflow用户

发布于 2012-05-24 13:12:23

您提出的解决方案将会起作用。但是,由于实际连接到消息收发服务器的生产者可能无法向消息收发服务器发送消息,因为日志将以更快的速度被放入存储器队列中,所以消息很有可能在内存队列中积聚。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10700193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档