乐趣区

关于rabbitmq:一Rabbitmq基础介绍

一、介绍 AMQP 协定

个性:
1:分布式事务反对。
2:音讯的长久化反对。
3:高性能和高牢靠的音讯解决劣势。

散发策略:
1:轮询散发
2:偏心散发

AMQP 音讯路由必须的三局部:交换器、路由、绑定

消费者从队列中接管音讯:

  1. 通过 AMQP 的 basic.consume 命令将信道置为接管模式,直到勾销队列订阅为止。可能继续接管音讯
  2. 通过 AMQP 的 basic.get 命令实现向队列获取一条音讯

留神:

  • RabbitMq 基于 AMQP 协定
  • 对个消费者共用同一队列,音讯的生产流程循环生产,cosumerA,cosumerB。

    1、messageA 达到队列先 给 conusumerA,在 consumerA 中确认了接管了 messageA 音讯,RabbiMQ 将 messageA 从队列中删除
    2、message 发送给 consumerB ranhou….

  • 问题一:consumerA 没有确认音讯会怎么样?

    messageA 会发送给下一个消费者,从而保障音讯被生产,如果 consumerA 没有确认音讯,队列将不会发送音讯给消费者 A, 能够利用这点来管制生产时长。

  • 问题二:应用什么形式回绝解决该条音讯?

    1、把消费者从 rabbiMq 断开(会减少对 RabbitMQ 的负荷)2、RabbitMq2.0.0 及以上版本能够应用 AMQP 的 basic.reject 命令。把 reject 命令的 requeue 值设为 true 则将音讯发送到下一个 message,false 则是移除该音讯。

名词介绍:

  • 生产者
  • 有效载荷(理论传输数据),
  • 标签(形容数据,指定谁能够复制音讯)
  • 队列
  • 消费者
  • 信道:当 TCp 连贯建设会创立 AMQP 信道,AMQP 的命令通过信道发送,每条信道被指定惟一 id。

二、交换器和绑定

交换器通过路由键来散发音讯到不同队列:一共有 4 中类型交换器 direct、famous、topic、headers(headers 交换器容许你匹配 Amqp 音讯的 header 而非路由键)

  1. direct 交换器: 如果路由键匹配的话,音讯就被投递到对应的队列

服务器必须实现 direct 类型交换器,蕴含一个空白字符串的默认交换器。队列的名称就是路由键

  1. famous 交换器:会将音讯匹配到所有附加在此交换器上的队列

3.topic 交换器:通过通配符匹配音讯,使得不同源头的音讯达到同一队列

三、虚拟主机

每一个 vhost 实质上是一个 mini 版的 RabbitMq 服务器,领有本人的队列、交换器和绑定。挡在 Rabbitmq 集群中创立了一个 mq 则整个集群中都会创立这个 vhost。

4、音讯长久化和策略

  1. 长久化的形式:1、把它 的投递模式(delicery mode)选项设置为 2 2、发不到长久化的交换器 3、达到长久化的队列。(服务器会将持久性的音讯写入到持久性日志中)

5、应用 Rabbitmq 的大抵流程

  • 连贯 Rabbitmq
  • 获取信道
  • 申明交换器
  • 申明队列
  • 队列和交换器绑定
  • 生产音讯
  • 敞开信道
  • 敞开连贯

RabbitMq 是运行在 Erlang 上的
1、启动结点 ./sbin/rabbitmq -server
2、敞开结点 ./sbin/rabbitmqctl stop 只敞开 rabbitmq ./rabbitmqctl stop_app
3、Rabbitmq 日志:LOG_BASE = /var/log/rabbitmq
会创立两个日志文件 RABBITMQ_NODENAME-sasl.log 和 RABBITMQ_NODENAME.log

文章参考书籍:《Rabbimq 实战 高效部署分布式音讯队列》

退出移动版