【问题标题】:How to use RabbitMQ for storing form data in a 3-Tier architecture如何使用 RabbitMQ 在 3 层架构中存储表单数据
【发布时间】:2016-11-08 00:03:01
【问题描述】:

所以在我的测试项目中,我使用了 3 个系统:

  1. 前端 => WordPress 表单
  2. 后端 => SuiteCRM
  3. 集成 => 中间件 (RabbitMQ)

我有一个所谓的“人”,可以在 WordPress 网站上的活动中注册。

点击按钮后我想要实现的是将表单数据发布到我的 CRM 工具中:

这意味着我的 CRM 的数据库表 'registered_users' 将填充表单的数据。 (表已创建,列与表单匹配)。

我的问题是:

  1. 我正在努力争取能够使用中间件 RabbitMQ 工作吗? RabbitMQ 可以用于 PHP 变量的传输并将它们存储在数据库中吗?
  2. 如果是,我将采用什么方法集成此中间件软件?
  3. 这个主意好不好? RabbitMQ 能够做到这一点吗?
  4. 除了使用 RabbitMQ 之类的软件之外,还有哪些其他好的方法可以解决我的问题?

【问题讨论】:

  • 对“中间件”一词的使用不当。在任何情况下,RabbitMQ(与所有队列一样)采用某种形式的消息。然后稍后一个或多个消费者处理一条消息并将其从队列中删除。
  • 这个问题看起来更像是在请求"N-tier"。当存在异步流时,队列很有用,并且在某些场景(路由、重放、负载缓冲)中可以提供许多优势。然而,这并不是所有问题的正确解决方案。
  • 无论如何,RabbitMQ 会这样: 1) 用户按下提交表单的客户端(Web 浏览器)上的按钮; 2) 前端Web应用程序(例如PHP)向Rabbit Exchange发布一条带有所需信息的消息; 3)消费者应用程序监听来自rabbit的队列并“做某事”(无论应该做什么)以响应接收到特定的消息/数据。
  • 将消息视为 JSON 文本(RabbitMQ 允许任何数据,但是..)。消费应用程序知道消息中的内容和任何本地上下文。消费者知道发布者中存在哪些变量,除非这些变量已转换为消息中的信息。例如,可以从相关的注册表单信息构建 JSON 消息。
  • 当然,它可以为所欲为。

标签: php wordpress integration sugarcrm suitecrm


【解决方案1】:

你可以用 RabbitMQ 做你想做的事,但你需要的架构比你建议的要多。

  1. 用户点击表单提交,并发布到您的网络服务器
  2. Web 服务器捕获表单提交并创建 JSON 文档
  3. Web 服务器通过 RabbitMQ 发布 JSON 文档
  4. 后端服务使用 JSON 文档并更新数据库

有关 PHP 的基本 RabbitMQ 教程应该可以帮助您:

您正在专门寻找 Worker Queue:

您可能想查看这些来自 James Titcumb(又名“asgrim”)的 PHP 和 RabbitMQ 资源

还有我自己的一些书,还有一本关于 PHP 和 RabbitMQ 的书

【讨论】:

  • 1 个或更多工人没那么重要。您使用的基本模式是工人模式。它允许您根据需要进行扩展,但不需要您拥有多个工作实例。我推荐这种方法,因为它可以让你在需要时成长。更简单的方法(例如第一个教程)可能会完成工作,但随着您的前进,很快就会遇到限制。
  • 哦好吧!!现在使用工人模式是合乎逻辑的!非常感谢!
猜你喜欢
  • 2018-01-13
  • 2011-11-27
  • 1970-01-01
  • 2012-02-13
  • 2013-03-02
  • 2016-05-19
  • 2020-05-16
  • 2021-01-30
  • 2011-07-30
相关资源
最近更新 更多