博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabiitMq
阅读量:5308 次
发布时间:2019-06-14

本文共 1942 字,大约阅读时间需要 6 分钟。

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格式    

 

 

 

 

 

 

 

 

 

 

      

转载于:https://www.cnblogs.com/Geyoung/p/9516790.html

你可能感兴趣的文章
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>