1.消息通讯
同步通讯:即时通讯,同步通讯(视频,QQ聊天)
异步通讯:消息暂存于容器中,达到某种条件,传输给接收者(延迟通讯)。容器的实现(MQ)
2.AMQP
1)高级消息队列协议
2)通用的应用层协议
3)约定了消息的格式和工作方式
4)遵守这个协议可以实现异步通讯
3.RabbitMq(Erlang语言)
1.定义:实现了AMQP高级消息队列协议的消息队列服务
Broker:表示RabbitMQ服务
Virtual host:虚拟主机。可以用来做不同用户之间通信相互隔离的效果。
Connection:建立 publisher->consumer之间的TCP长连接
Channel:信道。每个线程创建单独的Channel进行通讯,多线程的支持,避免每个线程都要建立Connection
4.rabbitmq中exchange type(4种类型)
1)Direct exchange 直接转发路由(routing key)
规则:(routing key==binding key )
eg:消息会分发到queue1队列中
2)fanout exchange 广播类型(routing key)
规则:将消息分发给所有与当前Exchange绑定的queue上
3)Topic 主题类型(routing key)
规则:routing key采用通配符的方式与binding key匹配,消息分发到匹配中的queue中
通配规则:
(1). 分割单词 (abc.123=>两个单词)
(2)# 代表一个或多个单词 (#.123=> [abc.123] [abc.bcd.efg.123])
(3)* 代表一个单词 (*.123=> [abc.123] [bcd.123])
4)headers exchange类型(headers,Arguments)
规则:所有queue中的Arguments(条件表达式)(子集)in(包含于) 消息体的headers属性中的表达式 (父集)
eg:消息会分发到queue1,queue2,queue3队列中