Connection-lifecycle
#rabbitmq
What is the [[Connection]] lifecycle?
Content
Application configures the client library it uses to use a certain connection endpoint (e.g. hostname and port)
ํด๋ผ์ด์ธํธ(์ดํ๋ฆฌ์ผ์ด์ )๊ฐ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์ . (ํธ์คํธ๋ค์, ํฌํธ๋ฑ์ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก)
The library resolves the hostname to one or more IP addresses
ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํธ์คํธ๋ฅผ ํ๋ ์ด์์ IP๋ก ํ์ธ (Health check?)
The library opens a TCP connection to the target IP address and port
ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ทธ TCP ์ปค๋ฅ์ ์ ์คํ.
After the server has accepted the TCP connection, protocol-specific negotiation procedure is performed
ํด๋ผ์ด์ธํธ์์ ์คํํ ์ปค๋ฅ์ ์ด ์๋ฒ๊ฐ ๋ฐ์์ง๋ค์์, ํน์ ํ๋กํ ์ฝ ์ ์ฐจ๊ฐ ์คํ๋จ.
AMQP 0-9-1
,AMQP 1.0
The server then authenticates the client
๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ ๋ขฐํ ์ ์๋์ง ์ธ์ฆํจ.
The client now can perform operations, each of which involves an authorisation check by the server.
์ธ์ฆ์ด ๋๋๋ฉด, ํด๋ผ์ด์ธํธ๋ ์์ (e.g. publish, consume..) ์ ํ ์ ์๊ณ ๊ฐ ์์ ์ ์๋ฒ๊ฐ ๊ถํ์ ํ์ธํ๊ณ ์์.
The client retains the connections for as long as it needs to communicate with RabbitMQ
ํด๋ผ์ด์ธํธ๋ rabbitmq์ ํต์ ์ด ํ์ํ ๋๊น์ง ์ปค๋ฅ์ ์ ๊ณ์ ์ ์งํจ
extra..
์ปค๋ฅ์ ๋ผ์ดํ์ฌ์ดํด์ ๊ฒฝ์ฐ, ํ๋กํ ์ฝ๋ณ๋ก ์ฝ๊ฐ์ ๋ณํ๋ ์์ง๋ง, ํฐ ๋ณํ๋ ์์.
Extra
๋ฌธ์ ์ํฉ
RabbitMQ Queue ์์ฑ -> Spring boot application ์คํ(ํด๋ผ์ด์ธํธ)
ํด๋ผ์ด์ธํธ์์ ๋ฉ์ธ์ง๋ฅผ publish ํ๋ ค ํ ๋ ์๋ํ๋ ์ปค๋ฅ์ ์ด ๋งบ์ด์ง์ง ์์์. ์?
๊ทธ๋ฐ๋ฐ rabbitmq cli๋ฅผ ํตํด ์์๋ก ํด๋น queue ๋ฉ์ธ์ง๋ฅผ ์์ฑ ํ, ํด๋ผ์ด์ธํธ์ ์ปค๋ฅ์ ์ด ๋งบ์ด์ง.
์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ก๋ฉ ์์ ์ ์ปค๋ฅ์ ์ด rabbitmq node์ ์๋์ผ๋ก ๋งบ์ด์ง์ง ์๋?
์ฌ๋ฐ์ํ๋ฉด ๋ก๊ทธ๋ฅผ ์์ธํ ๋ด์ผํ ๋ฏ.
์ด๋ค ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ์ง
ํด๋ผ์ด์ธํธ์์ ์ปค๋ฅ์ ์ ๋งบ์ผ๋ ค๊ณ ํ ๋, ์ด๋ค ๋ก๊ทธ๊ฐ ๋์ค๋์ง (์ฑ๊ณต, ์๋, ์คํจ..)
References
https://www.rabbitmq.com/connections.html#lifecycle
https://en.wikipedia.org/wiki/Polling_(computer_science)
Last updated