java中的异步任务休息webservices

时间:2015-07-28 19:04:10

标签: java web-services rest optimization asynchronous

我目前正致力于电子商务门户网站的订单管理系统

后端是java中的rest webservices,而前端是angular js。

在下达/更新订单时,java中的其余服务执行许多任务

  1. 在db
  2. 中按顺序存储/更新订单和商品
  3. 通知第三方物流注册此订单
  4. 向客户发送电子邮件通知
  5. 向客户发送短信通知 等
  6. 我们已经使用阻塞队列为另一个功能实现了异步队列。

    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 个答案:

答案 0 :(得分:0)

电子商务门户的订单管理不是一个简单的问题。它很可能具有可伸缩性要求,并且使用简单的Blocking Queue进行异步处理不是一个好主意。

基于JVM的阻塞队列是内存中队列,需要生产者和使用者在同一个JVM进程中运行。

要在客户下新订单时发送电子邮件,您需要确保电子邮件确实已发送,应用程序重新启动不会导致阻止队列中丢失数据。

因此,您很可能应该使用进程外队列系统,例如Apache KafkaApache ActiveMQ或同等系统。