消息队列(消息队列的应用场景)
一、redis队列和消息队列的区别
具体业务需要自定制需求实际变形产者-消费者实现于类需求主要请求实际处理程解耦般都采取异步式通知请求跟用用redis其实没关系般实现需要用户请求封装TaskTask再pushredis队列端worker.php完全进程、线程并发处理Task并处理结调给请求唯麻烦点Task设计需要能够包含请求信息(请求内容请求标识等等).
二、消息队列的执行顺序到底是怎么样的
消息在消息队列中就是按照进入队列的先后顺序排列的。线程按照顺序从队列中取出消息并处理。多个辅助线程,只要保证各个消息是顺序的发送给主线程,就可以保证主线程的处理顺序
三、常见的消息队列有哪些,它们之间有什么区别
rabbitMQ:
RabbitMQ是基于Erlang语言编写的开源消息队列。RabbitMQ在数据一致性、稳定性和可靠性方面比较优秀,而且直接或间接的支持多种协议,对多种语言支持良好。但是其性能和吞吐量差强人意,由于Erlang语言本身的限制,二次开发成本较高。
kafka:
Kafka是LinkedIn于2010年12月开发并开源的一个分布式流平台,现在是Apache的顶级项目,是一个高性能跨语言分布式。快速持久化,可以在O(1)的系统开销下进行消息持久化;高吞吐
ActiveMQ:
是Apache下的一个子项目,介于ZeroMQ和RabbitMQ之间。类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景而且只需付出低消耗。被誉为消息中间件的“瑞士军刀”。但是ActiveMQ不够轻巧,而且对于队列较多的情况支持不好,据说还有丢消息的情况。
rocketMQ:
RocketMQ是阿里开源的消息中间件,目前在Apache孵化,使用纯Java开发,具有高吞吐量、高可用性、适合大规模分布式