RabbitMQ-理解消息通信-消费者和生产者
2017-05-08 17:28
295 查看
消费者和生产者 消息 信道
欢迎访问本人博客查看原文:http://wangnan.tech
生产者创建消息,然后发布到代理服务器
什么是消息呢?
消息包含两部分:有效载荷(payload)和标签(label)
有效负荷
就是你想要传输的数据,它可以试任何内容,一个json数组或者是你最喜欢的mp4,Rabbitmq不会在意这些
标签
描述了有效载荷,并且RabbitMQ用它来决定谁将获得消息的拷贝
举例来说:不同于TCP协议,当你明确指定发送方和接收方时,AMQP只会用标签表述这条信息,然后把消息交由Rabbit,Rabbit会根据标签把消息发送给感兴趣的接收方,这种通信方式是一种“发后即忘(fire-and-forget)”的单项方式
消费者很容易理解,他们连接到代理服务器上,并订阅到队列上,把消息想象成一个具名邮箱,每当消息到达特定邮箱时,RabbitMQ会将其发送给其中一个订阅的/监听消费者
当消费者接受到消息是,它只得到消息的一部分:有效载荷
你必须首先连接到Rabbit,才能消费或者发布消息,你在应用程序和Rabbit代理服务器之间创建一条TCP连接,一旦TCP连接打开,应用程序就可以创建一条AMQP信道
信道是建立在“真实的”tcp连接内的虚拟连接
为什么不直接通过TCP连接发送AMQP命令?
主要原因是对于操作系统来说建立和销毁TCP会话是非常昂贵的开销
如果我们为所有线程只使用一条TCP连接,但又确保每个线程的私密性,就像拥有独立连接一样的话,那不就非常完美了
线程启动后会在现成的连接上创建一条信道,也就获得了连接Rabbit上的私密通信路径,而不会给操作系统的TCP栈造成额外负担,在一条TCP连接上创建多少条信道是没有限制的,把它想象成一束光纤电缆就可以了
有了AMQP,你可以灵活的使用多个信道来满足应用程序的需求,而不会有众多tcp连接的开销
消息通信,特别是AMQP,可以被当做加强版的传输层
当你理解了这些概念,你就吧RabbitMQ看做软件的路由器了
(注:内容整理自《RabbitMQ实战》)
欢迎访问本人博客查看原文:http://wangnan.tech
消费者和生产者
生产者
生产者创建消息,然后发布到代理服务器
消息
什么是消息呢?消息包含两部分:有效载荷(payload)和标签(label)
有效负荷
就是你想要传输的数据,它可以试任何内容,一个json数组或者是你最喜欢的mp4,Rabbitmq不会在意这些
标签
描述了有效载荷,并且RabbitMQ用它来决定谁将获得消息的拷贝
举例来说:不同于TCP协议,当你明确指定发送方和接收方时,AMQP只会用标签表述这条信息,然后把消息交由Rabbit,Rabbit会根据标签把消息发送给感兴趣的接收方,这种通信方式是一种“发后即忘(fire-and-forget)”的单项方式
消费者
消费者很容易理解,他们连接到代理服务器上,并订阅到队列上,把消息想象成一个具名邮箱,每当消息到达特定邮箱时,RabbitMQ会将其发送给其中一个订阅的/监听消费者当消费者接受到消息是,它只得到消息的一部分:有效载荷
信道
你必须首先连接到Rabbit,才能消费或者发布消息,你在应用程序和Rabbit代理服务器之间创建一条TCP连接,一旦TCP连接打开,应用程序就可以创建一条AMQP信道信道是建立在“真实的”tcp连接内的虚拟连接
为什么不直接通过TCP连接发送AMQP命令?
主要原因是对于操作系统来说建立和销毁TCP会话是非常昂贵的开销
如果我们为所有线程只使用一条TCP连接,但又确保每个线程的私密性,就像拥有独立连接一样的话,那不就非常完美了
线程启动后会在现成的连接上创建一条信道,也就获得了连接Rabbit上的私密通信路径,而不会给操作系统的TCP栈造成额外负担,在一条TCP连接上创建多少条信道是没有限制的,把它想象成一束光纤电缆就可以了
有了AMQP,你可以灵活的使用多个信道来满足应用程序的需求,而不会有众多tcp连接的开销
总结
消息通信,特别是AMQP,可以被当做加强版的传输层当你理解了这些概念,你就吧RabbitMQ看做软件的路由器了
(注:内容整理自《RabbitMQ实战》)
相关文章推荐
- RabbitMQ消息通信,一个生产者和多个消费者
- RabbitMQ消息通信,生产者发送消息给指定的消费者的消息队列
- RabbitMQ消息通信,一个生产者和多个消费者,广播式消息通信
- 消息队列_RabbitMQ-0002.深入MQ生产者/信道/交换机/队列/消费者?
- RabbitMQ消息队列之二:消费者和生产者 Demo
- RabbitMQ-理解消息通信-队列
- RabbitMQ-理解消息通信-虚拟主机和隔离
- java线程间通信[实现不同线程之间的消息传递(通信),生产者和消费者模型]
- RabbitMQ-理解消息通信-持久化策略
- RabbitMQ消息队列生产者和消费者
- RabbitMQ消息队列之二:消费者和生产者
- RabbitMQ-理解消息通信-交换器和绑定
- RabbitMQ学习笔记2-理解消息通信
- RabbitMQ 消息发送和消息获取 之 rabbitMQ消息生产者和消费者
- JAVA 线程间通信 -生产者消费者JDK5.0升级版
- 消息队列RabbitMQ和ActiveMQ的生产者流量控制
- Java基础复习:线程通信—生产者消费者改进
- 黑马程序员--JAVA基础复习之多线程(三)线程间通信 生产者消费者
- java基础12:线程间通信---生产者消费者问题
- JAVA 线程间通信 - 生产者与消费者