我一直在尋找的RESTful Web服務,並想知道關於REST建模事件隊列。將事件隊列建模爲寧靜服務是可以接受的嗎?
假設在URL:http://my.domain/events處可以訪問事件隊列,在我看來應用於此URL的POST操作沒問題,因爲它會將該事件添加到表示隊列的列表末尾。此外,如果我對這個URL執行GET操作,在我看來,返回隊列頭也沒問題。
我的問題是 - 它是沒關係的GET操作也刪除隊列的頭或這應該由一個單獨的DELETE操作來執行?
我一直在尋找的RESTful Web服務,並想知道關於REST建模事件隊列。將事件隊列建模爲寧靜服務是可以接受的嗎?
假設在URL:http://my.domain/events處可以訪問事件隊列,在我看來應用於此URL的POST操作沒問題,因爲它會將該事件添加到表示隊列的列表末尾。此外,如果我對這個URL執行GET操作,在我看來,返回隊列頭也沒問題。
我的問題是 - 它是沒關係的GET操作也刪除隊列的頭或這應該由一個單獨的DELETE操作來執行?
是沒關係的GET操作也刪除隊列
沒有頭,它不是從靜止的角度。根據REST最佳實踐,GET請求應爲安全。對一個URL做任何數量的GET請求應該與完全沒有任何請求具有相同的效果。
有一個關於你的設計多了一個關注的問題。通常有兩種常見的模式來檢索隊列頭:
爲了支持這兩種模式,我認爲您應該只在執行GET時檢索消息並實現DELETE方法,以便它返回一個已刪除的消息對象作爲響應。這樣你將遵循REST統一接口,你的隊列客戶端將能夠實現這兩個模式。
希望它有幫助!
貴誠信要求允許GET +一步到位刪除? 事件通常不會丟失。如果在刪除執行後響應檢索失敗會發生什麼?
我將GET隊列的頭部,然後發送確認包含收到併成功處理的事件ID。因此,您保證至少交付一次。
根據您正在處理的事件數量,消息總線可能是更合適的選項。
不會成爲一個過度熱心的REST模式的崇拜者。 REST是一個協議,但它不一定需要傳達服務的合同。
你說的是完全正常的,只要消費者和隊列之間的合同是明確的記載。