关于AMQP协议的一些疑问

来源:互联网 发布:人一生 知乎 编辑:程序博客网 时间:2024/05/02 04:20

正在学习中,将一些疑问记录下来:

queue中的消息,只要sub端订阅了,就能接收?那么本不该接收的人,也能接收,是否有安全隐患?

A:有身份认证的,如user:password之类

queue中的消息,如果要投递给多个接收端(比如A和B),那么,投递给A之后,那个消息在queue中会被删除吗?如果被删除了,就不能再投递给B了?

AMQP对message持久化的处理,是怎么规定的?哪些message,在什么情况下会被持久化?

持久化的消息是以什么形式存储的?之后又是怎样被重新加载的?

AMQP的server对内存要求是不是比较大,在读写量巨大的情况下?内存较小的机器该怎么办?

AMQP的三层中的最底层的传输层协议可以任意替换吗?怎么替换?

消息交换、文件传输、流传输、远程进程调用 在AMQP中是如何体现的?

AMQP传输的数据可以是加密的吗?如果可以,该怎样加密解密?

“一个连接支持多个会话” ?

怎样以root身份查看rabbitmq的配置,如vhost,user和password等信息?

A向rabbitmq做了sub,然后B向rabbitmq做pub,A通过rabbitmq收到消息。问题:A sub之后,能断开和rabbitmq的连接吗?如果断开了,rabbitmq能主动向A发起连接吗?

希望从rabbitmq接收消息的client是不是都要主动向rabbitmq发起连接并保持长连接?并且之后所有的接收消息都是通过这同样一个连接做的?



todo list:

AMQP协议:

http://blog.csdn.net/zhangxinrun/article/details/6546479

http://langyu.iteye.com/blog/759663

xxx对rabbitmq c++版的封装,build通过

上面build的client和rabbitmq-c的server通信

xxx的封装中,对连接池,线程池的处理

tesseract不读文件,改读图像文件的数据流

c++ client调用tesseract的库


===================================


AMQP是非对称的,客户端生产和消费消息,服务器存储和路由这些消息

路由关键字(Routing Key):一个消息头,交换器可以用这个消息头决定如何路由某条消息

持久存储(Durable):一种服务器资源,当服务器重启时,保存的消息数据不会丢失

虚拟主机(Virtual Host):一批交换器、消息队列和相关对象。虚拟主机是共享相同的身份认证和加密环境的独立服务器域。客户端应用程序在登录到服务器之后,可以选择一个虚拟主机。

主题:通常指发布消息;AMQP规范用一种或多种交换器来实现主题。

消息代理:等同于服务器。


===================================


  1. 存储转发(多个消息发送者,单个消息接收者)。
  2. 分布式事务(多个消息发送者,多个消息接收者)。
  3. 发布订阅(多个消息发送者,多个消息接收者)。
  4. 基于内容的路由(多个消息发送者,多个消息接收者)。
  5. 文件传输队列(多个消息发送者,多个消息接收者)。
  6. 点对点连接(单个消息发送者,单个消息接收者)。


===================================


rabbitmq的Log 在这里:/var/log/rabbitmq