01/10/2018, 11:42

Thắc mắc về method POST webservice restful

Mình có thấy 1 web service khi mình gửi dữ liệu qua method POST cho nó xử lý thì nó sẽ trả về id và status = queued || error , và truyền dữ liệu cho thằng khác xử lý (do cái này xử lý rất là lâu), nếu status = queued mình phải dùng id đó rồi lại While(true) gọi đến method GET nó cũng trả về status = inprocess || completed, nếu là completed thì nó sẽ trả về cùng với data mà mình cần.
Cấu trúc nó là như vậy và định implement nó nhưng mình thắc mắc là sao method POST nó không cần thằng kia xử lý xong mà có thể trả response về cho client ngay tức thì được ?

Mai Anh Dũng viết 13:51 ngày 01/10/2018

sao method POST nó không cần thằng kia xử lý xong mà có thể trả response về cho client ngay tức thì được ?

HTTP Method nào cũng đâu quan trọng, quan trọng là ở phía server handle cái request đó như thế nào. Có nhiều cách để implement, nhưng về cơ bản là ở phía server sẽ thực hiện “nhờ ai đó” xử lý cái request từ client rồi ngay lập tức response cho client với id của cái async task.

Implement cái này có nhiều cách, có thể dùng thread/task để process data, có thể gửi async request tới một server khác ở dạng tạo một cái task rồi chờ bên kia làm nó gửi notification về. Hoặc đơn giản nhất là tạo một cái crontab cho nó chạy, khi nào xong thì nó write vào DB. Phía client cứ polling liên tục khi nào DB có data thì trả về.

Uchiha Sasuke viết 13:46 ngày 01/10/2018

async processing, thread/task

Cảm ơn anh, mấy từ khóa này em chưa nghe bao giờ vậy chắc phải mất mấy ngày tìm hiểu nữa rồi

Mai Anh Dũng viết 13:48 ngày 01/10/2018

ài, ok, em nghĩ thế này đi, đó là các kiểu fire and forget trong lập trình ấy. Em yêu cầu làm một việc, rồi em quên nó đi. Em không phải chờ. Anh sửa lại câu trả lời để tránh tập trung vào chữ async.

Nếu em viết app trên PC thì nó sẽ là backgroud thread.
Còn nếu em biết cronjob thì em cứ tưởng tượng là cái nhiệm vụ process data sẽ do cronjob làm. Khi làm xong ghi vào DB.

Còn nếu em đang làm bằng java thì em sử dụng framework gì? Em cứ search tên framework + background task sẽ tìm thấy cách người ta làm.

Uchiha Sasuke viết 13:56 ngày 01/10/2018

em dùng Spring MVC anh ạ,

Mai Anh Dũng viết 13:55 ngày 01/10/2018

Google với từ khoá “Spring MVC background task” ra ngay kết quả đầu tiên luôn

stackoverflow.com
Gandalf StormCrow

Submitting a background task from spring mvc app

java, multithreading, spring-mvc
asked by Gandalf StormCrow on 09:33AM - 01 Oct 12

Còn về Async thì em chỉ cần đọc cái định nghĩa đơn giản thế này là được

When you execute something synchronously, you wait for it to finish before moving on to another task. When you execute something asynchronously, you can move on to another task before it finishes.

stackoverflow.com
tush1r

Asynchronous vs synchronous execution, what does it really mean?

asynchronous, synchronous
asked by tush1r on 03:39PM - 14 Apr 09
Uchiha Sasuke viết 13:44 ngày 01/10/2018

Hic trước em học thread trên lớp mà không biết để làm gì để bây giờ phải hỏi câu ngu ngơ này tìm hiểu lại thì giờ mới biết haizz

Bài liên quan
0