请教一下关于MQ的技术选型?

目前开新项目业务(电商类)打算用 Larvel+Hyperf 开发, Laravel 负责有上下文依赖的数据库 IO 密集的业务,Hyperf 负责一些异步的任务处理和外部接口调用和数据回传等,中间需要依赖 MQ。 对于 MQ(采购云服务)的技术选型目前考虑:

  1. 对于 MQ 这块儿只有 redis 和 kafka 的使用经验, rabbitMQ 和 rocketMQ 没在实际项目中用过
  2. redis 消费完数据就不在了,且不是专业 MQ,不做考虑
  3. kafka 没有消费确认机制,对于订单的处理等强一致性的业务可能需要消费确认
  4. 听说 rocketMQ 对 PHP 好像不是很友好?

请教有经验的朋友,帮忙推荐一下,该选哪个比较好呢?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

只用过 rabbitMQ,laravel 生产,gin 消费,一天 200-300W 条,没发现出问题

1年前 评论
讨论数量: 26

我的项目一直在用 rabbitMQ,只用了 “Fanout 、topic”,目前没有发现有什么问题,也都够我们的业务使用; 我们的模式是: laravel 是生产者 .net core 是消费者

1年前 评论
穿过你的黑发的我的手 (楼主) 1年前

只用过 rabbitMQ,laravel 生产,gin 消费,一天 200-300W 条,没发现出问题

1年前 评论

不要在业务中引入陌生人。

1年前 评论
穿过你的黑发的我的手 (楼主) 1年前

感谢各位的建议和反馈,决定就 rabbitMQ 了

1年前 评论

感觉选哪个 MQ 都不差,但重要的问题是 1. 需要实现常驻进程的平滑退出,不能造成数据丢失 2. 保证数据重复处理的幂等性。。我目前使用的是 Hyperf + Redis List 实现的队列,让我苦恼的是因为 Swoole 的特殊性,没法做到进程平滑退出。 :grin:

1年前 评论
Junwind 1年前

hyperf rabbitmq 的包我感觉做的不完善

1年前 评论
穿过你的黑发的我的手 (楼主) 1年前

rabitmq 在 PHP 支持中很好,rocketmq 在 PHP 中没使用过

1年前 评论
穿过你的黑发的我的手 (楼主) 1年前

之前待的公司用的是 kafka,spring boot 生产者,laravel 消费者

1年前 评论

php 消费 rabbitmq, 用的是进程,一台机器最多就开几百个进程,并发有限,可以试试用 swoole 来消费 rabbitmq, 如果可以用协程消费,那么就能实现大并发的消费。仅是建议,实际我也还在试

1年前 评论
穿过你的黑发的我的手 (楼主) 1年前
农夫山泉 (作者) 1年前
农夫山泉 (作者) 1年前
农夫山泉 (作者) 1年前

直接上 Hyperf 全写呗。用 kafka 然后 redis steam 做异常旁路 这种两个框架分开写 代码维护两份意义不大

1年前 评论
穿过你的黑发的我的手 (楼主) 1年前
农夫山泉 1年前
梦想星辰大海 1年前
  1. 看你的项目情况,如果数据量小,我觉得 redis 方式的消息队列其实可以处理的,觉得不可靠可以阅读下 larave redis 那块的代码,你就知道使用 redis 做消息丢列不是简单用 list 来做(单纯用 list 来做,没有确认机制容易导致消息丢失还有状态判断)
  2. 适中的话可以使用 rabbitmq
  3. 大项目的话,直接用 kafka
1年前 评论
李铭昕

RabbitMQ 就行,Hyperf 实现了多路复用,性能是可以的

1年前 评论