2016-03-07 36 views
2

讓我說我已經實現了幾個端點Rest
現在我想確保一個特定的路線,讓說POST /log只得到最多2線程和其他重要路線獲得其餘的Threads如何在tomcat/java web服務器世界中限制每條路由的最大線程數

在載重小時內,我們不希望有多個線程投入POST /log路線。我們不在乎POST /log路線。

[1] 如何在tomcat中實現這個?

[2] 有沒有其他的方式來實現這一點,而不是在Web服務器上中繼?


PS:我確實發現SingleThreadModel interface in Servlet,但這已被棄用。

編輯:

我不想添加過濾器和計數請求,並一度漲停突破下降請求在這種情況下,JVM仍然需要切換線程上下文的熱量,只是運行我計數請求和放棄請求

理想情況下,像事件循環NODE.JS這樣的事情被引用,其中只有一個線程正在處理請求,其他人正在排隊。

在我的知識中,實現這一目標的一種方法是通過爲每個線程分配不同的連接器並分配線程池。但是我尋找一些對開發友好的東西。

+0

默認情況下,所有請求都有一個共享連接池。如果你只允許2個請求,你想怎麼處理額外的請求?只是拒絕? – AdamSkywalker

+0

排隊等待某個號碼然後拒絕。 – Bhuvan

回答

2

設置QoSFilter並針對要限制的url模式適當標記您的優先級。

2

您需要的是將資源分配給特定URI的基本服務質量。

這可以通過Servlet過濾器來實現,並且可以在Servlet 3.0之後排隊等待HTTP請求。例如,

Jetty準確地提供了一個QoSFilter用於此目的,請參閱its documentation

+0

任何類似的tomcat – Bhuvan