java rest web服务中的web服务异步任务
我目前正在为电子商务门户网站开发订单管理系统
后端是java中的rest Web服务,而前端是angular js
java中的rest服务在下订单/更新订单时执行许多任务
- 在数据库中存储/更新订单和订单中的项目
- 将此订单通知第三方物流部
- 向客户发送电子邮件通知
- 向客户发送sms通知 等
我们已经使用阻塞队列为另一个特性实现了异步队列
1. use the same queue(current size is 200 and is in memory) and post to it
2. create a new queue inside the rest webservice application
3. integrate with 3rd party queues.
有人能对#3给出见解吗?还是选择1或2是明智之举
# 1 楼答案
电子商务门户的订单管理不是一个简单的问题。它很可能有可伸缩性要求,使用简单的Blocking Queue进行异步处理不是一个好主意
基于JVM的阻塞队列位于内存队列中,要求生产者和消费者在同一个JVM进程中运行
对于在客户下新订单时发送电子邮件,您需要确保电子邮件确实已发送,并且应用程序重新启动不会导致阻塞队列中存在的数据丢失
因此,您很可能应该使用进程外队列系统,如Apache Kafka或Apache ActiveMQ或等效系统