在工作中,我们正在讨论是否要实现我们的PHP应用程序的消息队列。目前,我们正在寻找在Apache的ActiveMQ的。有一件事我们不完全清楚的是,是否有可能基于在队列到达的消息来触发的过程。

我们发现文献到目前为止似乎表明,消息队列是一个基于拉的机构:该过程定期运行(或者作为后台进程或一个cron),并从队列中拉出其传入消息。是否有可能变成一个推送机制?也就是说,有一个方法为具有消息队列实际发起HTTP请求(或过程)当消息到达?我们已经找到一种方法是发布/订阅模式,但这需要运行我们的PHP应用程序在一个无限循环,以维持一个开放(TCP)连接到ActiveMQ的实例,这感觉就像一个有点杂牌的。

任何输入,将不胜感激。

有帮助吗?

解决方案

这是显而易见的解决方案是让出版商发起HTTP请求存储该消息之后,但是这引出了一个问题,为什么然后您使用的一个消息队列?

有一组消费者监听队列,并做他们的工作作为消息来不是杂牌,这是件好事,可扩展的设计。 (虽然我同意在无限循环中运行的PHP过程都有其缺点。)

您为什么选择一个消息队列,而不是,也就是说,一个数据库,该数据库存储的信息?的“生产者”可以在消息存储为表中的行,然后触发“消费者”与该消息的PK。

其他提示

考虑制作骆驼路由从队列(JMS成分)拉消息并转发到HTTP端点(HTTP分量)。你甚至可以决定主办ActiveMQ代理过程中的骆驼路线 - 创造一种智能路由中介的。 ActiveMQ的使这容易通过在ActiveMQ的分布捆绑骆驼核心库。

下面是最近有关/相关岗位:

HTTP投递从ActiveMQ的使用骆驼

一个应用程序的你的设计理念来监视队列是触发外部应用程序来运行的工业方法。 看一看的IBM WebSphere“触发监控应用程序”。在执行过程中可以有多个触发器监控,在一个队列的消息,所以它扩展到启动应用程序很好的服务器上的应用程序安装在触发监控运行(如果你设计的可扩展性,你应该能够如果需要的话具有若干应用程序服务器)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top