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

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

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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

只用过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年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!