Celery跨语言的问题(Go 、RabbitMQ、Celery、Python)
Celery跨语言的问题(Go 、RabbitMQ、Celery、Python)
-
Go服务端作为生产者生产消息到mq
-
celery 启动worker 来消费 mq的消息
-
这样的话,序列化方式和celery自带的几种不支持,也就是Go生产的消息,不符合celery消费消息的数据格式
-
怎样做才能解决这个问题?
解决方式1(待验证)
-
构造相同的数据格式,https://github.com/gocelery/gocelery#gocelery-client-example
-
和python配置相同的celery配置,使用配置去接受任务的结果 backend
-
gocelery 生产消息,python celery work 消费消息做处理,把结果写入backend,gocelery 从backend取数
解决方式2(可实现)
-
flask API(接受消息,直接存入mq里[celery序列化的数据格式] 此API只做 tasks.*.apply_async() / delay......),api直接将消息存到mq,直接返回给调用端200
-
celery worker 消费 步骤1 生产的消息
这样做的好处?
-
celery worker 可以动态增加,当mq有消息堆积的时候,扩展worker就ok
-
celery 可以延迟处理,队列优先级
-
celery 可以限速
-
celery 可以定义工作流
-
flower 可以进行监控
标题:Celery跨语言的问题(Go 、RabbitMQ、Celery、Python)
作者:lishulongVI
地址:https://blog.thinking.mobi/articles/2020/03/06/1583496791208.html