像 RabbitMQ 这样的消息队列是这个应用程序的理想解决方案吗?
Is a message queue like RabbitMQ the ideal solution for this application?
我一直在做一个基本上是电子商务的项目。这是一个多租户应用程序,其中每个客户端都有自己的域,网站会根据客户端的配置进行自我调整。
如果客户已经有像 ERP 这样的管理库存的软件,我需要一个媒介,当电子商务生成订单时,可以通知 ERP 这样的外部应用程序发生了这种情况采取应对措施。这就像在不同的应用程序上引发事件。
我考虑过将这些事件存储在数据库中并让客户端在短时间内发出请求以获取数据,但是关于轮询和使用 REST Api 的一些事情似乎很老套。
然后我想到了使用Websockets,但是如果事件产生的时候客户端由于某种原因离线了,就无法保证传递。
然后我遇到了Message Queues,具体来说是RabbitMQ。使用消息队列,以简单的方式对问题进行建模,电子商务将在一端生成事件并将它们推送到一个队列,客户端工作人员将在事件到达时处理该队列。
老实说,我不知道什么是最好的方法,希望你们中一些有经验的开发人员能帮助我。
您使用消息队列的想法很好,由于您描述的原因,它比数据库或 websockets 更好。使用消息队列(RabbitMQ,或其他基于 server/broker 的系统,如 Apache Qpid)方法,您应该考虑将代理置于 "DMZ" 类网络位置,以便您的内部电子商务系统可以将事件推送到它,您的外部客户可以直接进入您的核心业务系统,而无需冒直接访问的风险。您还可以 运行 每个客户一个单独的经纪人。
我同意史蒂夫的观点,在您的情况下使用消息队列是理想的。消息队列允许 Web 服务器快速响应请求,而不是被迫当场执行资源密集型程序。您可以将事件放入队列,让 consumer/worker 在消费者有时间处理请求时处理请求。
我推荐CloudAMQP for RabbitMQ, it's easy to try out and you can get started quickly. CloudAMQP is a hosted RabbitMQ service in the cloud. I also recommend this RabbitMQ guide: https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html
我一直在做一个基本上是电子商务的项目。这是一个多租户应用程序,其中每个客户端都有自己的域,网站会根据客户端的配置进行自我调整。
如果客户已经有像 ERP 这样的管理库存的软件,我需要一个媒介,当电子商务生成订单时,可以通知 ERP 这样的外部应用程序发生了这种情况采取应对措施。这就像在不同的应用程序上引发事件。
我考虑过将这些事件存储在数据库中并让客户端在短时间内发出请求以获取数据,但是关于轮询和使用 REST Api 的一些事情似乎很老套。
然后我想到了使用Websockets,但是如果事件产生的时候客户端由于某种原因离线了,就无法保证传递。 然后我遇到了Message Queues,具体来说是RabbitMQ。使用消息队列,以简单的方式对问题进行建模,电子商务将在一端生成事件并将它们推送到一个队列,客户端工作人员将在事件到达时处理该队列。
老实说,我不知道什么是最好的方法,希望你们中一些有经验的开发人员能帮助我。
您使用消息队列的想法很好,由于您描述的原因,它比数据库或 websockets 更好。使用消息队列(RabbitMQ,或其他基于 server/broker 的系统,如 Apache Qpid)方法,您应该考虑将代理置于 "DMZ" 类网络位置,以便您的内部电子商务系统可以将事件推送到它,您的外部客户可以直接进入您的核心业务系统,而无需冒直接访问的风险。您还可以 运行 每个客户一个单独的经纪人。
我同意史蒂夫的观点,在您的情况下使用消息队列是理想的。消息队列允许 Web 服务器快速响应请求,而不是被迫当场执行资源密集型程序。您可以将事件放入队列,让 consumer/worker 在消费者有时间处理请求时处理请求。
我推荐CloudAMQP for RabbitMQ, it's easy to try out and you can get started quickly. CloudAMQP is a hosted RabbitMQ service in the cloud. I also recommend this RabbitMQ guide: https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html