18.7. AMQ Broker 플러그인 지원
AMQ는 사용자 정의 플러그인을 지원합니다. 플러그인을 사용하여 디버그 로그를 통해서만 사용할 수 있는 다양한 이벤트 유형에 대한 정보를 기록할 수 있습니다. 여러 플러그인을 함께 등록, 연결 및 실행할 수 있습니다. 플러그인은 등록 순서에 따라 실행됩니다. 즉, 등록된 첫 번째 플러그인은 항상 먼저 실행됩니다.
사용자 지정 플러그인을 생성하고 ActiveMQServerPlugin
인터페이스를 사용하여 구현할 수 있습니다. 이 인터페이스를 사용하면 플러그인이 classpath에 있고 브로커에 등록됩니다. 모든 인터페이스 메서드가 기본적으로 구현되므로 구현해야 하는 필수 동작만 추가해야 합니다.
18.7.1. 클래스 경로에 플러그인 추가
관련 .jar
파일을 <broker _instance_dir> /lib 디렉터리에 추가하여 사용자 정의 생성 브로커
플러그인을 브로커 런타임에 추가합니다.
임베디드 시스템을 사용하는 경우 포함된 애플리케이션의 일반 클래스 경로에 .jar
파일을 배치합니다.
18.7.2. 플러그인 등록
broker.xml
구성 파일에 broker-plugins
요소를 추가하여 플러그인을 등록해야 합니다. 속성
하위 요소를 사용하여 플러그인 구성 값을 지정할 수 있습니다. 이러한 속성은 플러그인이 인스턴스화된 후 플러그인의 init(Map<String, String>) 작업으로 읽고 전달됩니다.
<broker-plugins> <broker-plugin class-name="some.plugin.UserPlugin"> <property key="property1" value="val_1" /> <property key="property2" value="val_2" /> </broker-plugin> </broker-plugins>
18.7.3. 프로그래밍 방식으로 플러그인 등록
플러그인을 프로그래밍 방식으로 등록하려면 registerBrokerPlugin()
메서드를 사용하여 플러그인의 새 인스턴스를 전달합니다. 아래 예제에서는 UserPlugin
플러그인 등록을 보여줍니다.
Configuration config = new ConfigurationImpl();
config.registerBrokerPlugin(new UserPlugin());
18.7.4. 특정 이벤트 로깅
기본적으로 AMQ 브로커는 특정 브로커 이벤트를 기록하기 위해 LoggingActiveMQServerPlugin
플러그인을 제공합니다. LoggingActiveMQServerplugin
플러그인은 기본적으로 주석 처리되어 있으며 정보를 기록하지 않습니다.
다음 표에서는 각 플러그인 속성에 대해 설명합니다. 이벤트를 기록하려면 구성 속성 값을 true
로 설정합니다.
속성 | 설명 |
| 연결이 생성되거나 삭제될 때 정보를 기록합니다. |
| 세션을 만들거나 닫을 때 정보를 기록합니다. |
| 소비자가 생성 또는 닫을 때 정보를 기록합니다. |
| 메시지가 소비자에게 전달되고 메시지가 소비자가 승인할 때 정보를 기록합니다. |
| 메시지가 주소로 전송되었을 때 및 메시지가 브로커 내에서 라우팅될 때 정보를 기록합니다. |
| 큐가 생성 또는 삭제될 때, 메시지가 만료될 때, 브리지를 배포할 때, 중요한 오류가 발생할 때 정보를 기록합니다. |
| 위의 모든 이벤트에 대한 정보를 기록합니다. |
연결 이벤트를 기록하도록 LoggingActiveMQServerPlugin
플러그인을 구성하려면 broker.xml
구성 파일에서 < broker-plugins
> 섹션의 주석을 제거합니다. 모든 이벤트의 값은 주석 처리된 기본 예제에서 true
로 설정됩니다.
<configuration ...> ... <!-- Uncomment the following if you want to use the Standard LoggingActiveMQServerPlugin plugin to log in events --> <broker-plugins> <broker-plugin class-name="org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin"> <property key="LOG_ALL_EVENTS" value="true"/> <property key="LOG_CONNECTION_EVENTS" value="true"/> <property key="LOG_SESSION_EVENTS" value="true"/> <property key="LOG_CONSUMER_EVENTS" value="true"/> <property key="LOG_DELIVERING_EVENTS" value="true"/> <property key="LOG_SENDING_EVENTS" value="true"/> <property key="LOG_INTERNAL_EVENTS" value="true"/> </broker-plugin> </broker-plugins> ... </configuration>
< broker-plugins
> 섹션 내에 구성 매개변수를 변경한 경우 브로커를 다시 시작하여 구성 업데이트를 다시 로드해야 합니다. 이러한 설정 변경 사항은 configuration-file-refresh-period
설정을 기반으로 다시 로드 되지 않습니다.
로그 수준이 INFO
로 설정되면 이벤트가 발생한 후 항목이 기록됩니다. 로그 수준이 DEBUG
로 설정된 경우 이벤트 전과 후에 모두 로그 항목이 생성됩니다(예: beforeCreateConsumer()
및 afterCreateConsumer
()). 로그 수준이 DEBUG
로 설정되면 로거는 가능한 경우 알림에 대한 자세한 정보를 기록합니다.