消息队列实现系统之间的双向解耦,生产者往消息队列中发送消息,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到系统解耦的目的,也大大提高了系统的高可用性和高并发能力。
RabbitMQ 的文章之前写过,但是当时给的示例是 Demo 版的,这篇文章主要是结合之前写的理论知识,将 RabbitMQ 集成到技术派项目中。下面我们先回顾一下理论知识,如果对这块知识已经清楚的同学,可以直接跳到实战部分。
这种模式下,可以使用RabbitMQ的默认交换机,也可以创建自定义的交换机。在Topic模式中,Exchange将消息路由到所有与其绑定的Queue中,同时根据指定的通配符规则进行匹配,实现灵活的消息路由。
在go-micro中异步消息的收发是通过Broker这个组件来完成的,底层实现有RabbitMQ、Kafka、Redis等等很多种方式,这篇文章主要介绍go-micro使用RabbitMQ收发数据的方法和原理。
management: 用户可以通过 AMQP 做的任何事 列出自己可以通过 AMQP 登入的 virtual hosts 查看自己的 virtual hosts 中的 queues, exchanges 和 bindings 查看和关闭自己的 channels 和 connections 查看有关自己的 virtual hosts 的“全局”的统计信息,包含其他用户在这些 virtual hosts 中的活动。
MQ,中文意思是消息队列,字面来看就是存放消息的队列,也就是事件驱动架构中的Broker。使用JSON序列化,我们可以在父工程导入,也可以在两个子工程中都导入:1.在消息发送方Publisher 编写配置类,也可不写配置类,写在启动类中 :步骤一:先导入依赖,可以导入父工程中,也可以在提供者的工程中导入,声明在父工程最好,因为消息接收服务也需要导入依赖。
来源 | Java技术栈 RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
我们假设订单系统要花费 500 ms,其他系统都要花费 300 ms。那么整套系统应该要花费 1.4 s。这种顺序执行的方式,除了执行效率慢意外,容错率也很低 —— 一旦有任何中间流程出现问题,整个业务都要瘫痪。
推荐学习1:推荐学习2:推荐学习3:02 介绍。AMQP的实现有:RabbitMQ、OpenAMQ、Apache Qpid、Redhat Enterprise MRG、AMQP Infrastructure、ØMQ、Zyre等。