Rabbitmq学习

Rabbitmq学习

amqp介绍

高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计

  • 主要特征是面向消息,队列,路由(包括点对点的订阅和发布),可靠性,安全

rabbitmq基础

使用com.rabbitmq:amqp-client:4.0.3
demo代码地址: https://github.com/lynl001/amqp-rabbit/

  1. Connection:与rabbitserver建立的一个连接,由ConnectionFactory创建,虽然创建时指定了多个server地址,但是只与一个物理的server进行连接,此连接基于Socket进行连接
    ConnectionFactory connectionFactory = new ConnectionFactory();
    connectionFactory.setUsername(username);
    connectionFactory.setPassword(password);
    connectionFactory.setHost(host);
    connectionFactory.setVirtualHost(vhost);
    Connection connection = connectionFactory.newConnection();
  1. Channel:建立在Connection上的一个通道,相对于Connection来说,他是轻量级的;
   Channel channel=connection.createChannel();

注意:尽量避免在多线程中使用一个channel,必须保证一个一次只处理一个请求


  1. Exchange,Queue,Route
    一个消息传递模型:
    信息传递

生产者P发送信息,消息经过exchange和route进入Queue,消费者C只负责到指定队列中获取Message

  1. Broker:消息队列服务器实体。
  2. Route Key:路由关键字,exhange根根据这个关键字进行消息的投递
  3. Queue:消息队列载体,每个消息都会投入到一个或多个队列
  4. Binding:绑定,把exchange和queue根据路由规则绑定起来
  5. vhost:虚拟主机,一个broker可以开设多个vhost,用作不同用户的权限分离
  6. channel: 消息通道,在客户端的每个连接可以建立多个channel,每个channel代表一个回话任务
  7. Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列
    1. Fanout Exchange:广播模式,会将message广播到所有与Exchang绑定的queue中,适用与所有消费者都要处理(队列不做区分)
    2. Direct Exchange:默认的Exchange,不用指定routing key,默认routekey与queue同名,适用与将一个message分发到不同的queue即消费者,在消费者之间做了一个均衡
    3. Topic Exchange:发布订阅模式,根据routingkey和exchange类型将一个message发布到一个或多个Queue中,需要事件消息的人只需要绑定对应exchange(在derect的基础上添加routeKey可以进行包名匹配)
    4. Headers Exchange:根据Message的头部信息来匹配(rpc),客户端包括发送与接收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值