我正在设计一个应用程序来根据某些规则管理 RabbitMQ 工作人员。例如:
维持最少数量的工人
如果队列增长超过 M 个任务,则产生最多 N 个工作线程
杀死超过 X 分钟的工人
我最初想用 Go 编写它,因为它是编译的,我可以简单地将应用程序编译到目标操作系统并对其进行守护程序。但是,我的概念设计涉及一个循环,每 Y 秒收集一次数据并将其传递给决策引擎。然后引擎将引发其他 goroutine 监听的事件,以生成或杀死 worker。
我找到了可以解决这个问题的Emission库,但是我在某处读到了一条评论,说它可能不是线程安全的。老实说,我对 Go 和线程编程的了解不足以正确评估这个库是否能满足我的需求,或者这在 Go 中是否可行。
我可以在 NodeJS 中非常快速地编写它,甚至可以使用nexe编译它。但是,我想学习一门新语言,我喜欢 Go 中的定向编译,并且它可以在 goroutine 本身之外进行多线程处理。
这是可能的,还是我试图在 Go 中硬塞一些它不是设计的东西?以不同的方式完成相同的目标还是只是一起使用不同的语言会更好?
繁花不似锦
相关分类