2장. 네트워크 연결에서 어셉터 및 커넥터 구성
AMQ Broker에 사용되는 연결 유형은 네트워크 연결과 VM 내 연결의 두 가지 유형이 있습니다. 네트워크 연결은 두 당사자가 동일한 서버 또는 물리적으로 원격에 관계없이 다른 가상 시스템에 있을 때 사용됩니다. 애플리케이션 또는 서버든 클라이언트가 브로커와 동일한 가상 머신에 있을 때 In-VM 연결이 사용됩니다.
네트워크 연결에서는 Netty 를 사용합니다. Netty는 Java IO 또는 NIO, TCP 소켓, SSL/TLS 또는 HTTP 또는 HTTPS를 통한 터널링 등 다양한 방법으로 네트워크 연결을 구성할 수 있는 고성능 하위 수준의 네트워크 라이브러리입니다. 또한 Netty는 모든 메시징 프로토콜에 단일 포트를 사용할 수 있습니다. 브로커는 사용 중인 프로토콜을 자동으로 감지하고 수신 메시지를 추가 처리를 위한 적절한 처리기로 보냅니다.
네트워크 연결의 URI에 따라 유형이 결정됩니다. 예를 들어 URI에서 vm
를 지정하면 VM 내 연결이 생성됩니다.
<acceptor name="in-vm-example">vm://0</acceptor>
또는 URI에 tcp
를 지정하면 네트워크 연결이 생성됩니다. 예를 들면 다음과 같습니다.
<acceptor name="network-example">tcp://localhost:61617</acceptor>
다음 섹션에서는 네트워크 연결 및 VM 내 연결에 필요한 두 가지 중요한 구성 요소인 어셉터 및 커넥터 에 대해 설명합니다. 이 섹션에서는 TCP, HTTP 및 SSL/TLS 네트워크 연결 및 인-VM 연결에 대한 어셉터 및 커넥터를 구성하는 방법을 보여줍니다.
2.1. 수락자 정보
수락자는 브로커에 대한 연결을 만드는 방법을 정의합니다. 각 어셉터는 클라이언트가 연결하는 데 사용할 수 있는 포트 및 프로토콜을 정의합니다. 간단한 어셉터 구성은 다음과 같습니다.
<acceptors> <acceptor name="example-acceptor">tcp://localhost:61617</acceptor> </acceptors>
브로커 구성에 정의된 각 어셉터
요소는 단일 어셉터
요소에 포함됩니다. 브로커에 대해 정의할 수 있는 수락자 수에 대한 상한은 없습니다. 기본적으로 AMQ Broker에는 다음과 같이 지원되는 각 메시징 프로토콜에 대한 어셉터가 포함됩니다.
<configuration ...> <core ...> ... <acceptors> ... <!-- Acceptor for every supported protocol --> <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor> <!-- AMQP Acceptor. Listens on default AMQP port for AMQP traffic --> <acceptor name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor> <!-- STOMP Acceptor --> <acceptor name="stomp">tcp://0.0.0.0:61613?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=STOMP;useEpoll=true</acceptor> <!-- HornetQ Compatibility Acceptor. Enables HornetQ Core and STOMP for legacy HornetQ clients. --> <acceptor name="hornetq">tcp://0.0.0.0:5445?anycastPrefix=jms.queue.;multicastPrefix=jms.topic.;protocols=HORNETQ,STOMP;useEpoll=true</acceptor> <!-- MQTT Acceptor --> <acceptor name="mqtt">tcp://0.0.0.0:1883?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=MQTT;useEpoll=true</acceptor> </acceptors> ... </core> </configuration>