3장. 네트워크 연결에서 메시징 프로토콜 구성
AMQ Broker에는 플러그형 프로토콜이 있으므로 네트워크 연결에 대해 하나 이상의 프로토콜을 쉽게 활성화할 수 있습니다.
브로커는 다음 프로토콜을 지원합니다.
위의 프로토콜 외에도 브로커는 "Core"라는 자체 네이티브 프로토콜도 지원합니다. 이 프로토콜의 이전 버전은 "HornetQ"로 알려졌으며 Red Hat JBoss Enterprise Application Platform에서 사용되었습니다.
3.1. 메시징 프로토콜을 사용하도록 네트워크 연결 구성
프로토콜을 네트워크 연결과 연결하려면 먼저 프로토콜을 연결해야 합니다. (네트워크 연결 생성 및 구성 방법에 대한 자세한 내용은 2장. 네트워크 연결에서 어셉터 및 커넥터 구성 을 참조하십시오.) <broker _instance_dir> /etc/broker.xml
에 있는 기본 구성에는 이미 정의된 여러 연결이 포함되어 있습니다. 편의를 위해 AMQ Broker에는 지원되는 각 프로토콜에 대한 어셉터와 모든 프로토콜을 지원하는 기본 수락자가 포함됩니다.
기본 수락자 개요
다음은 broker.xml
구성 파일에 기본적으로 포함된 어셉터입니다.
<configuration> <core> ... <acceptors> <!-- All-protocols acceptor --> <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>
지정된 네트워크 바인딩에서 프로토콜을 활성화하는 유일한 요구 사항은 수락자의 URI에 protocols
매개변수를 추가하는 것입니다. 매개변수 값은 쉼표로 구분된 프로토콜 이름 목록이어야 합니다. protocol 매개변수가 URI에서 생략되면 모든 프로토콜이 활성화됩니다.
예를 들어 AMQP 프로토콜을 사용하여 포트 3232에서 메시지를 수신하기 위한 어셉터를 생성하려면 다음 단계를 따르십시오.
-
<
;broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. -
<
acceptors> 스탠자
에 다음 행을 추가합니다.
<acceptor name="ampq">tcp://0.0.0.0:3232?protocols=AMQP</acceptor>
기본 어셉터의 추가 매개변수
최소 허용 구성에서는 프로토콜을 연결 URI의 일부로 지정합니다. 그러나 broker.xml
구성 파일의 기본 어셉터에는 몇 가지 추가 매개 변수가 구성됩니다. 다음 표에서는 기본 어셉터에 대해 구성된 추가 매개변수에 대해 자세히 설명합니다.
acceptor(s) | 매개변수 | 설명 |
---|---|---|
All-protocols acceptor AMQP STOMP | tcpSendBufferSize |
TCP 전송 버퍼의 크기(바이트)입니다. 기본값은 |
tcpReceiveBufferSize |
TCP 수신 버퍼의 크기(바이트)입니다. 기본값은 TCP 버퍼 크기는 네트워크의 대역폭 및 대기 시간에 따라 조정되어야 합니다. 요약하면 TCP 전송/수신 버퍼 크기는 다음과 같이 계산되어야 합니다. buffer_size = 대역폭 * RTT.
여기서 대역폭은 초당 바이트 수이고 RTT(네트워크 왕복 시간)는 초 단위입니다. RTT는 빠른 네트워크의 경우 기본값에서 버퍼 크기를 늘릴 수 있습니다. | |
All-protocols acceptor AMQP STOMP HornetQ MQTT | useEpoll |
이를 지원하는 시스템(Linux)을 사용하는 경우 Netty epoll을 사용하십시오. Netty 네이티브 전송은 NIO 전송보다 우수한 성능을 제공합니다. 이 옵션의 기본값은 |
All-protocols acceptor AMQP | amqpCredits |
총 메시지 크기에 관계없이 AMQP 생산자가 보낼 수 있는 최대 메시지 수입니다. 기본값은 AMQP 메시지를 차단하는 데 단위를 사용하는 방법에 대한 자세한 내용은 7.3.2절. “AMQP 생산자 차단” 을 참조하십시오. |
All-protocols acceptor AMQP | amqpLowCredits |
브로커가 프로듀서 단위를 재정의하는 임계값을 낮춥니다. 기본값은 AMQP 메시지를 차단하는 데 단위를 사용하는 방법에 대한 자세한 내용은 7.3.2절. “AMQP 생산자 차단” 을 참조하십시오. |
HornetQ 호환성 허용자 | anycastPrefix |
클라이언트가 클라이언트가 주소에 연결할 때 라우팅 유형을 지정할 수 있도록 접두사를 구성하는 방법에 대한 자세한 내용은 4.6절. “어셉터 구성에 라우팅 유형 추가” 을 참조하십시오. |
multicastPrefix |
클라이언트가 클라이언트가 주소에 연결할 때 라우팅 유형을 지정할 수 있도록 접두사를 구성하는 방법에 대한 자세한 내용은 4.6절. “어셉터 구성에 라우팅 유형 추가” 을 참조하십시오. |
추가 리소스
- Netty 네트워크 연결에 대해 구성할 수 있는 다른 매개변수에 대한 자세한 내용은 부록 A. 어셉터 및 커넥터 구성 매개변수 을 참조하십시오.