AWS SQS,SNS,Redis,RabbitMQ或其他

时间:2017-06-29 09:10:39

标签: redis rabbitmq amazon-sqs amazon-sns

寻找一些想法/模式来解决电子商务订购系统的设计问题。

我有订阅的用户和收到订单后处理订单的客户。

因此,假设用户1属于客户1,我希望此订单仅推送到客户1终端(网站)。另一个用户2属于客户2,该订单应仅发送给客户2终端网站。

我的想法是将新订单同步存储到某个db,然后将消息发布到某种队列。这个队列应该由客户的网络终端使用ajax池或服务器发送的事件进行监控,但最大的问题是如何构建这些队列,以便客户1的订单只交付给客户1,订单交给客户2,只有客户2,等等。

我是否为每个客户创建队列,是否为每个客户创建redis的发布/订阅者频道,然后在客户端上使用特定逻辑来仅轮询该客户端所属的队列?是sns,sqs,redis,rabbitmq还是其他什么适合这个?系统应该可靠,订单很重要。

我认为轮询数据库是一种方法,但我不确定这是否有效?

1 个答案:

答案 0 :(得分:0)

RabbitMQ是解决您问题的最好方法。您必须为每个使用者创建一个队列,每个用户都会将订单发送到该使用者的队列。

此外,您不需要轮询数据库,因为RabbitMQ会在以事件方式到达RabbitMQ经纪人时立即将订单发送给您的消费者。

RabbitMQ还允许您将邮件和队列标记为可靠且持久,这样您就不会丢失邮件。当然,它们是按顺序交付的