服务之间最常见的通信方式是直接调用彼此来通信。
消息从一端发出后立即就可以达到另一端,称为即时消息通讯(同步通信)。
消息从某一端发出后,首先进入一个容器进行临时存储,当达到某种条件后,再由这个容器发送给另一端,称为延迟消息通讯(异步通信)。
AMQP
一个提供统一消息服务的应用层标准高级消息队列协议,是一个通用的应用层协议。
消息发送与接受的双方遵守这个协议可以实现异步通讯,这个协议约定了消息的格式和工作方式。
是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言。
Server(Broker):接收客户端连接,实现AMQP协议的消息队列和路由功能的进程。
Virtual Host:虚拟主机的概念,类似权限控制组,一个Virtual Host里可以有多个Exchange和 Queue。
Exchange:交换机,接收生产者发送的消息,并根据Routing Key将消息路由到服务器中的队列 Queue。
ExchangeType:交换机类型决定了路由消息行为,RabbitMQ中有三种类型Exchange,分别是 fanout、direct、topic. Message Queue:消息队列,用于存储还未被消费者消费的消息。
Message:由Header和body组成,Header是由生产者添加的各种属性的集合,包括Message是 否被持久化、优先级是多少、由哪个Message Queue接收等。body是真正需要发送的数据容。
BindingKey:绑定关键字,将一个特定的Exchange和一个特定的Queue绑定起来。