RabbitMQ基础知识(一)

消息中间件

消息中间件(message Queue Middleware,简称MQ)指利用高效可靠的消息传递机构进行与平台无关的数据交流,并基于数据通信来进行分布式的系统集成。一般有两个传递方式:点对点与发布/订阅。

目前开源的消息中间件有很多,比较主流的有RabbitMQ,Kafka,ActiveMQ,RockectMQ等。

本文主要介绍RabbitMQ基础知识

 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

应用场景:

它的应用场景又是什么?解决什么问题

解耦、异步、通信、削峰

你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?你是否遇到过秒杀活动的剧增访问导致系统宕机?

消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题;你也可以把它用于系统间服务的相互调用(RPC)通过使用消息队列;我们可以异步处理请求,从而缓解系统的压力。

 

基础概念:

  • Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输。
  • Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。一般来说发布者都是把消息发送到这里,由它来按定好的规则路由到具体的队列中。    
  • Queue:消息的载体,每个消息最终都会被投到一个或多个队列或者丢弃,消费里直接从这里中获取消息。           
  • Binding:它的作用就是把exchange和queue按照路由规则绑定起来,指设置交换器的路由规则。binding key:在设置路由规则的同时,一般会指定一binding key,在消息发布时作用,匹配消息发布的key值进行路由。。
  • Routing Key:消息发布时指定一个key值,用于指定消息最终路由到哪一个队列中。          
  •  vhost:虚拟主机     

路由规则 :ExchangeType:

 

  • fanout:路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue
  • direct: 路由规则也很简单,它会把消息路由到那些binding keyrouting key完全匹配的Queue中。
  • topic:direct类型的Exchage相似,也是将消息路由到binding keyrouting key相匹配的Queue. binding key中可以存在两种特殊字符“*”与“#”,用于做模糊匹配,其中“*”用于匹配一个单词,“#”用于匹配多个单词(可以是零个
  • headers类型的Exchange不依赖于routing keybinding key的匹配规则来路由消息,而是根据发送的消息内容中的headers属性进行匹配。 

消息投递:由生产者(P)投递到Exchange(X),由交换器Exchange(X)根据规则路由到相应的Queue进行存储。

消息消费:由消费者(C1\C2)从Queue获取消息进行消费。

下一章介绍RabbitMQ安装与配置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值