设为首页 收藏本站
查看: 1245|回复: 0

[经验分享] rabbitmq vhost

[复制链接]

尚未签到

发表于 2017-7-2 14:45:25 | 显示全部楼层 |阅读模式
一个队列不受任何限制,它可以存储你想要存储的消息量,它本质上是一个无限缓冲区。多个生产者可以向同一个队列发关消息,多个消费者可以尝试从同一个消息队列中接收数据。
注意:生产者 消费者 中间件不必在一台机器上,实现应用中也是绝大多数不在一起的。
生产者:
首先,创建一个connection通过socket连接,去和服务器连接起来(需要传目 地服务器的ip,用户名,密码等)。接着创建一个channel。要发送消息,我们必须声明,然后我们可以向队列发布消息。注意:声明的队列,在服务器中如果不存在了,会自动创建。而消息的内容是字节数组,在使用时,注意编码问题。
消息队列的使用过程大概如下:
1:客户端连接到消息队列服务器,打开一个channel
2:客户端声明一个exchange,并设置相关属性
3:客户端声明一个queue,并设置相关属性
4:客户端使用routing key,在exchange和queue之间建立好绑定关系
5:客户端投递消息到exchange
消息中间件的主要功能是消息的路(Routing)和缓存(Buffering).在AMQP中提 供类类似功能的两种域查模型:Exchange和Message queue
Exchange接收消息生产生(Message Producer)发送的消息根据不同的路由算法将消息发送到Message queue。Message queue会在消息不能被正常消费时缓存这些消息,具体的缓存策略由实现者决定,当message queue与消息消费者(Message consumer)之间的连接通畅时,Message queue有将消息转发到consumer的责任。
DSC0000.jpg

  在与多个Message queue关联后,Exchange中就会存在一个路由表,这个表中存储着每个Message queue所需要消息的限制条件。Exchange就会检查它接受到的每个Message的Header及Body信息,业决定将Message路由到哪个queue中去。Message的Header中应该有个属性叫Routing Key,它由Message发送者产生,提供给Exchange路由这个Message的标准。Exchange根据不同路算法不同有Exchange Type.比如有Dirct类似,需要Binding key等于Routing key;也有Binding key与Routing key符合一个模式关系;也有根据Message包含 的某些属性来判断。一些基础的路由算法由AMQP所提供,client application也可以自定义各种自己的扩展路由算法。
DSC0001.jpg

DSC0002.jpg

  vhost虚拟主机:一个broker里可以开设多个vhost,用作不同用户的权限分离。
  channele消息通道:在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
  消息生产者如何确认消息发布成功呢?
  默认情况下,当用户也即消息生产者将消息发布出去后,会发生什么事情思?答案是什么也不会发生--对用户来说。这也就是说,消息发布后,就没有消息生产者什么事了,用户就不知道消息是发布成功了还是失败了。如果用户想知道发送消息是否成功,就可以用"transations"和"publisher confirems"这两种方式来处理消息发送。transations,也就是事务,提交后会给发布者返回发布是否成功的信息。publisher confirms和transations都 会接收到消息是否发布成功的信息,两者不同的是,transations是同步的,而publisher confirms方式是异步的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390403-1-1.html 上篇帖子: 关于买桃问题的一点想法 下篇帖子: 多线程编程(二)-Exchanger的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表