php网站建设步骤,增城营销型网站建设,电子外贸网站模板,网站广告网络推广价格低什么是消息队列 进行大量的远程调用时#xff0c;传统的Http方式容易造成阻塞#xff0c;所以引入了消息队列的概念#xff0c;即让消息排队#xff0c;按照队列进行消费。 它能够将发送方发送的信息放入队列中#xff0c;当新的消息入队时#xff0c;会通知接收方进行处…什么是消息队列 进行大量的远程调用时传统的Http方式容易造成阻塞所以引入了消息队列的概念即让消息排队按照队列进行消费。 它能够将发送方发送的信息放入队列中当新的消息入队时会通知接收方进行处理一般消息发送方称为生产者接收方称为消费者。 这样所有的请求都可以丢到消息队列中再由消费者取出不再是直接连接消费者的形式了而是加了一个中间件这是一种很好的解耦方案。并且在高并发的情况下由于消费者能力有限消息队列也能起到一个削峰填谷的作用堆积一部分的请求再由消费者来慢慢处理而不会像直接调用那样请求蜂拥而至。
消息队列组件
ActiveMQ、RabbitMQ、RocketMQ、Kafka是目前主流的消息队列组件。它们的特点如下 综合以上因素这里选择RabbitMQ作为消息队列组件进行演示。原因如下
吞吐量虽然不高但中小型项目完全足够。时效性强。延迟达到微妙级别较同类产品延迟最低。可用性强。提供了完善的高可用实现机制。可靠性强。基本不会丢包。并发能力强。基于Erlang开发提供了丰富的交换机功能性能好、延时低。开源免费。没有使用成本且社区活跃度高产品稳定。
消息队列组件的功能和实现是大同小异的学习好一个组件就可以做到一通百通而且还有Spring Cloud Stream这样的消息队列连接组件可以屏蔽各消息队列组件的差异性使用统一的标准调用消息队列组件。
所以想要掌握消息队列从RabbitMQ入手是一个比较好的选择。
RabbitMQ
官方网站https://www.rabbitmq.com
RabbitMQ是实现了高级消息队列协议AMQP的开源消息代理软件亦称面向消息的中间件。RabbitMQ服务器是用Erlang语言编写的而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
Rabbit科技有限公司开发了RabbitMQ并提供对其的支持。
起初Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合资企业。2010年4月被VMware旗下的SpringSource收购。RabbitMQ在2013年5月成为GoPivotal的一部分。
其特点如下
拥有数万计的用户是最受欢迎的开源消息队列之一从T-Mobile到RuntasticRabbitMQ在全球范围内用于小型初创企业和大型企业。轻量级易于在本地和云端部署它支持多种消息协议。可以部署在分布式和联合配置中以满足大规模、高可用性要求。在许多操作系统和云环境中运行并为大多数流行语言提供了广泛的开发者工具。
运行过程 **生产者Publisher**生产消息的终端。**信道Channel**服务端和客户端连接都会使用一个Channel再通过Channel去访问到RabbitMQ服务器。这里的通信协议不是http而是amqp协议。**虚拟主机Virtual Host**类似于环境隔离不同环境都可以单独配置一个Virtual Host每个Virtual Host可以包含很多个Exchange和Queue每个Virtual Host相互之间不影响。交换机**Exchange**根据请求转发给相应的消息队列每个队列都可以绑定到Exchange上这样Exchange就可以将数据转发给队列了可以存在很多个不同的Exchange类型可以用于实现不同消息的模式。**消息队列Queue**消息队列本体生产者所有的消息都存放在消息队列中等待消费者取出。**消费者Consumer**消费消息的终端。