我有一个Web前端处理Webhooks并将消息发送给后端工作人员。这些消息属于不同的组织,每条消息具有以下格式:
class Message{
int OrganizationId {get;set;}
string Payload {get;set;}
}
如今,处理后端已实现为Azure Webjob。 webjob是一个简单的控制台应用程序,可拦截从前端发送的消息。控制台应用程序列出了队列中所有待处理的组织,并为每个组织创建了一个线程,以便可以为每个组织并行处理消息。
不幸的是,Azure Webjobs的缩放效果不佳(原因与此article中所述的思路相同)。我们正在考虑将后台处理任务移至Kubernetes。理想情况下,每个组织消息都应在容器中处理。这些容器将在每个吊舱中分成5组。
虽然pod的配置很简单,但我们无法找到一种自动连续地发现消息队列中的组织并以组织ID为参数触发容器的方法。
注意:当前的实现不允许我们将每个组织消息拆分到一个单独的队列中,因为可能有成千上万的组织同时将消息泵送到该队列中。