簡體   English   中英

具有Redis消息隊列的NodeJS-如何設置多個使用者(線程)

[英]NodeJS with Redis message queue - How to set multiple consumers (threads)

我有一個nodejs項目,它為外部Web應用程序公開了一個簡單的rest api。 該Webhook必須每秒處理大量請求,並非常迅速地將200 OK返回給呼叫者。 為了做到這一點,我研究了一個redis簡單隊列,該隊列與每個請求的隊列一起排隊,稍后(通過使用者線程)異步處理。

redis簡單隊列似乎是完成此任務的簡便方法( https://github.com/smrchy/rsmq

1)rsmq.receiveMessage(){.......}是阻塞方法嗎? 如果此處理程序很慢-是否會影響服務器的性能?

2)如果對問題1的回答是正確的-是否建議將對消息的使用提取到外部微服務? (專門的消費者)? 在這種環境下創建多線程使用者的最佳實踐是什么?

您可以使用Redis https://redis.io/topics/pubsub提供的pubsub功能

您可以在沒有訂閱者任何知識的情況下發布到各種渠道。 訂戶可以訂閱他們想要的頻道。

sreeni

1)不,它不會阻止事件循環,但是,僅在調用“ next”方法后才開始處理第二條消息,即,一次將處理一條消息。 為了克服這個問題,您可以並行啟動多個工作程序。 在這里看看: https : //stackoverflow.com/a/45984677/7201847

2)這是一個體系結構決策,取決於您要支持的負載和所擁有的硬件容量。 我建議至少使用兩個Node.js進程,一個用於將消息添加到隊列中,另一個用於實際處理它們,並根據性能測試的結果選擇是否需要啟動其他工作進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM