Design patterns 使用map和通道的golang调度员
我尝试在并发情况下使用go设计一个调度器,调度器需要将消息分派给其专用工作进程,该进程只处理一种消息(或工作进程),例如:Design patterns 使用map和通道的golang调度员,design-patterns,go,dispatcher,goroutine,Design Patterns,Go,Dispatcher,Goroutine,我尝试在并发情况下使用go设计一个调度器,调度器需要将消息分派给其专用工作进程,该进程只处理一种消息(或工作进程),例如: 工作类型A仅处理消息类型A 工作类型B仅处理消息类型B 等等, 因为我可以动态添加/删除处理不同类型消息的专用工作者。现在,我需要一个消息模式,只使用goroutine和channel。我计划有一个通道——一个具有相同类型工作线程的池,并将这些通道放在一个映射中,这样我就可以根据映射中的键按类型分发消息,如果处理消息C的工作线程不存在,它只会将消息分派到垃圾通道进行非处
- 工作类型A仅处理消息类型A
- 工作类型B仅处理消息类型B
- 等等,
提前谢谢。您真的需要像“员工池”一样使用该频道吗?为什么不使用单个通道处理消息,以及接收消息并按提取的消息类型将其发送到相关“处理器功能”的所需工作人员的数量?工作人员池部分可能有点过于工程化:(你为什么不在每次收到他们的信息时,就启动一个新的groutine呢?有一个敬业的员工在旁边等着工作有什么好处?