笔者之前被问了个问题:RabbiMQ和服务器之间建立的amqp信道是场连接还是短连接?笔者当时一脸懵逼,完全不懂这个长连接和短连接之间有啥区别,所以就乱选了一个短连接,然后面试官又接着问,为什么是短连接。。。哈哈哈。所以笔者之后查了下资料,得出了一个结论,在这里记录一下。
一、什么是长连接?什么是短连接?
说这两个连接之前,先普及一个概念:每一个http请求,都会有请求头和响应头。现在所阐述的长连接和短连接就是建立在这个基础上的,请求头和响应头中都有一个参数Connection:keep-alive,当请求头含有这个参数且,响应头部没有返回Connection:close这个参数的时候,就表明当前的http请求是一个长连接,下一个http请求可以复用当前连接,从而减少服务器新建和断开TCP连接的消耗。如果响应头部返回了Connection:close这个参数,则表明当前连接是短连接。
二、RabbitMQ的amqp信道是长连接还是短连接?
amqp信道是长链接。原因:Channel作为轻量级的Connection极大减少了操作系统建立TCP connection的开销。