加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

RabiitMq

发布时间:2020-12-14 03:48:52 所属栏目:大数据 来源:网络整理
导读:1、简介: MQ: 全称是Message、Queue,消息队列,也就是消息以管道的方式进行传递。 RabbitMQ 是一种实现了AMQP(advanced message queuing protocal)高级消息队列的协议的消息队列服务,用的是Erlang语言 2、使用场景: 抢杀购物 日志的读取 发送短信、邮

1、简介:

    MQ: 全称是Message、Queue,消息队列,也就是消息以管道的方式进行传递。

    RabbitMQ 是一种实现了AMQP(advanced message queuing protocal)高级消息队列的协议的消息队列服务,用的是Erlang语言

2、使用场景:

    抢杀购物

    日志的读取

    发送短信、邮件

    异步处理的情况

    应用解耦

3、工作机制

    组成:生产者、消费者、代理(RabbitMq本身)

    消息发送原理:应用服务程序和Rabbit server 之间会创建一个TCP链接,一旦TCP打开,并通过认证(认证就是你试图连接Rabbit之前发送的Rabbit服务器连接

           信息和用户名和密码

           有点像程序连接数据库,使用Java有两种连接认证的方式),创建一条AMQP信道

           信道是创建在“真实”TCP上的虚拟连接,AMQP命令都是通过信道发送出去的,

           每个信道都会有一个唯一的ID,不论是发布消息,订阅队列或者介绍消息都是通过信道完成的 

?

4、组成:

    ConnectionFactory(链接管理器):应用程序和Rabbit server建立链接的管理器,程序代码中实现

    Channel(信道):消息推送使用的通道

    Exchange(交换器):用于接受和分配消息

    Quere(队列):用于存储生产者的消息

    Routingkey(路由键):用于把生产者的数据分配到交换机上

    Bindingkey(绑定键):用于把交换器的消息绑定到队列上

    生产者--->ConnectionFactory ---->Routingkey(路由键)---->Exchange---->Bindingkey(绑定键)---->Quere

5、持久化原理

    RabbitMQ 会将你的持久化消息写入磁盘上的持久化日志文件,等消息被消费后,Rabbit会把消息标识为等待垃圾回收

    缺点:写入内存性能比较低,数据量大的时候不适合

6、虚拟主机

    每个Rabbit都能创建很多vhost,我们称之为虚拟主机,每个虚拟主机其实都是mini版的RabbitMQ,拥有自己的队列,交换器和绑定,拥有自己的权限机制。

7、命令

    rabbitmq-server -detached? 后台守护进程方式启动

    rabbitmqctl status? 查看rabbitmq 的安装情况

    启动服务:rabbitmq-server -detached【 /usr/local/rabbitmq/sbin/rabbitmq-server? -detached 】

    查看状态:rabbitmqctl status【 /usr/local/rabbitmq/sbin/rabbitmqctl status? 】

    关闭服务:rabbitmqctl stop【 /usr/local/rabbitmq/sbin/rabbitmqctl stop? 】

    列出角色:rabbitmqctl list_users

8、ip:15672

9、确认机制

    Message acknowledgment消息确认

    为了保证数据不被丢失,RabbitMQ支持消息确认机制,为了保证数据能被正确处理而不仅仅是被Consumer收到

    ,那么我们不能采用no-ack,而应该是在处理完数据之后发送ack.?

10、消息持久化  

    如果exchange(交换器)和quere(队列)都是持久化的,那么他们之间的binding也是持久化的

    如果exchange 和quere两者之间有一个持久化,一个非持久化,则不允许建立绑定

    一旦创建了队列和交换机,就不能修改器标识了,例如,创建了一个non-durable的队列,然后想把它改变成durable的,唯一的办法就是删除这个队列然后重现创建。

11、代码的实现:

    ------创建exchange(交换器)

    ------创建quere(消息队列)

    ------创建binding之间的关系

    ------创建具体的门面封装? 一个创造者 一个接受者来处理代码

    通过那个交换机、那个消息队列 发送什么消息? ?中间的传输尽量使用json格式    

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读