3장. 새로운 기능 및 변경된 기능

이 섹션에서는 AMQ Broker 7.11의 개선 사항 및 새로운 기능 집합을 설명합니다.

페이징에 사용되는 디스크 공간 제한
AMQ Broker를 페이지 메시지에 맞게 구성하는 경우 페이징 작업이 과도한 디스크 공간을 사용하지 못하도록 들어오는 메시지를 페이징하는 데 사용되는 디스크 공간을 제한할 수 있습니다. 자세한 내용은 AMQ Broker 구성의 특정 주소에 대한 페이징 시 디스크 사용량 제한을 참조하십시오.
페이징에서 읽은 메시지에 사용되는 메모리 제한
AMQ Broker를 페이지 메시지로 구성하는 경우 클라이언트가 메시지를 사용할 준비가 되면 브로커가 디스크에서 메모리로 다시 전송하는 메시지를 저장하는 데 사용되는 메모리를 제한할 수 있습니다. 자세한 내용은 AMQ Broker 구성에서 페이징된 메시지의 흐름을 메모리로 제어를 참조하십시오.
중요

클라이언트 애플리케이션이 승인 보류 중 메시지를 너무 많이 남겨 두면 브로커는 보류 중인 메시지가 승인될 때까지 페이지가 지정된 메시지를 읽지 않으므로 브로커에서 메시지 중단을 유발할 수 있습니다.

예를 들어, 페이지링된 메시지를 메모리로 전송하는 데 대한 제한이 기본적으로 20MB인 경우 브로커는 더 많은 메시지를 읽기 전에 클라이언트에서 승인을 기다립니다. 동시에 클라이언트가 브로커에 승인을 보내기 전에 충분한 메시지를 받기를 기다리는 경우 클라이언트가 사용하는 배치 크기에 따라 결정됩니다.

중단을 방지하기 위해 페이지링된 메시지를 메모리로 전송하거나 메시지 전달 수를 줄이는 브로커 제한을 늘립니다. 메시지를 더 빨리 커밋하거나 브로커에서 더 이상 메시지가 수신되지 않으면 시간 초과를 커밋하고 승인을 커밋하도록 하여 전송 메시지 수를 줄일 수 있습니다.

AMQ Management Console에서 큐의 제공 수 및 Delivering Cryostats 메트릭에서 메시지 전달 의 수와 크기를 확인할 수 있습니다.

Log4j 2 로깅 지원
7.11부터 AMQ Broker는 JBoss Logging 프레임워크 대신 Log4j 2 로깅 유틸리티를 사용하여 메시지 로깅을 제공합니다. OpenShift Container Platform 및 RHEL 플랫폼 모두에서 Log4j 2 로깅 구성을 사용자 지정할 수 있습니다.
Operator 로깅 수준 변경
OpenShift Container Platform의 AMQ Broker 7.11에서는 기본 로깅 수준을 변경하여 Operator 로그에 기록된 세부 정보를 늘리거나 줄일 수 있습니다. 자세한 내용은 Openshift에 AMQ Broker 를 배포 할 때 Operator의 로깅 수준 변경을 참조하십시오.
JAAS(Java Authentication and Authorization Service) 로그인 모듈 지원
OpenShift Container Platform의 AMQ Broker 7.11에서는 ActiveMQArtemisSecurity CR을 사용하여 AMQ Broker에 대한 사용자 인증 및 권한 부여를 구성하지 않고 시크릿에 CloudEvent 로그인 모듈을 구성할 수 있습니다. 시크릿에 CloudEvent 로그인 모듈을 구성하면 브로커를 재시작하지 않고도 속성 파일에서 사용자 및 역할 정보를 업데이트할 수 있습니다. 또한 CR에서 구성할 수 없는 LDAP와 같은 로그인 모듈을 구성할 수 있습니다. 자세한 내용은 Openshift에서 AMQ Broker 배포 의 시크릿에서 ScanSetting 로그인 모듈 구성을 참조하십시오.
업그레이드 제한
OpenShift Container Platform의 AMQ Broker 7.11에서 Operator는 브로커 컨테이너 이미지를 사용 가능한 최신 버전으로 자동으로 업그레이드합니다. 자동 업그레이드를 방지하거나 특정 브로커 및 init 컨테이너 이미지로만 자동 업그레이드할 수 있도록 배포에 대해 CR(사용자 정의 리소스)을 구성할 수 있습니다.
참고

자동 업그레이드를 제한하려면 CR에서 결합된 spec.deploymentPlan.imagespec.deploymentPlan.initImage 속성 또는 spec.version 특성 중 하나를 지정해야 합니다.

자세한 내용은 Openshift에 AMQ Broker 를 배포할 때 자동 업그레이드 제한 에서 참조하십시오.

확장 상태 보고

OpenShift Container Platform의 AMQ Broker 7.11에서 기본 브로커 CR의 Operator에서 보고한 상태 정보는 다음과 같이 확장됩니다.

  • CR 콘텐츠의 유효성입니다.
  • brokerProperties 속성에 구성된 속성의 애플리케이션입니다.
  • 브로커 Pod에 시크릿의 JAAS(Java Authentication and Authorization Service) 로그인 모듈 파일을 전파합니다.
  • 배포된 브로커의 버전과 해당 버전의 브로커 및 init 컨테이너 이미지의 URL입니다.
  • 배포에 메이저, 마이너, 패치 및 보안 업그레이드를 적용하는 기능
동기 미러링 지원
7.11부터 브로커 간 동기 미러링을 구성하여 메시지가 미러의 두 브로커 볼륨에 동시에 기록되도록 할 수 있습니다. 동기 미러링을 사용하여 재해 복구를 위해 미러링된 브로커가 최신 버전인지 확인합니다. 자세한 내용은 AMQ Broker 구성에서 브로커 연결 구성을 참조하십시오.
Pod 중단 예산
OpenShift Container Platform의 AMQ Broker 7.11에서는 유지 관리 기간과 같이 자발적으로 중단되는 동안 동시에 사용할 수 있어야 하는 클러스터에서 최소 Pod 수를 지정하도록 Pod 중단 예산을 구성할 수 있습니다. 자세한 내용은 OpenShift에 AMQ Broker를 배포 할 때 Pod 중단 예산 구성을 참조하십시오.
brokerProperties 구성은 변경 가능한 시크릿에 저장됩니다.
OpenShift Container Platform의 AMQ Broker 7.11에서 CR에 brokerProperties 특성을 사용하여 생성된 구성은 변경 가능한 시크릿에 저장됩니다. 변경 가능한 시크릿은 브로커를 다시 시작할 필요 없이 업데이트할 수 있습니다. 따라서 브로커가 구성을 정기적으로 다시 로드할 때 특히 브로커를 다시 시작해야 하는 업데이트 외에 구성 업데이트가 적용됩니다.
포함된 웹 서버를 제어하는 작업
7.11부터는 ActiveMQServerControl>-<에서 stopEmbeddedWebServer,startEmbededWebServer 및 restartEmbeddedWebServer 작업을 사용하여 AMQ Broker에 포함된 웹 서버를 중지하고 다시 시작할 수 있습니다. 이러한 작업을 사용하면 AMQ Broker의 SSL 인증서를 갱신하는 경우 AMQ Broker를 다시 시작하는 것을 방지할 수 있습니다.
AMQ Management Console에 로그인하는 데 사용되는 인증 정보는 메시지를 보내는 데 사용됩니다.

이전 버전의 AMQ Broker에서는 AMQ Management Console에서 메시지를 보내려면 AMQ Management Console 사용자 이름과 암호를 지정해야 했습니다. 7.11부터 AMQ 관리 콘솔에 로그인하는 데 사용하는 인증 정보를 사용하여 메시지가 전송됩니다.

기본 동작을 재정의하고 다른 인증 정보를 지정하여 개별 메시지를 보낼 수 있습니다. 자세한 내용은 Managing AMQ Broker 에서 주소로 메시지 보내기 에서 참조하십시오.

OpenShift Container Platform의 AMQ Broker는 Prometheus에 대한 지표 데이터를 수집하도록 사전 구성되어 있습니다.
OpenShift Container Platform의 AMQ Broker 7.11에서 AMQ Broker 컨테이너 Pod는 Prometheus Operator 서비스 모니터가 지표 데이터를 수집할 수 있도록 사전 구성됩니다. 이전 릴리스에서는 지표 데이터를 수집하기 위해 서비스 모니터에 필요한 포트를 노출해야 했습니다.
브로커 컨테이너에 대한 환경 변수 설정
OpenShift Container Platform의 AMQ Broker 7.11에서는 각 브로커 컨테이너에 전달되는 사용자 정의 리소스(CR)에서 환경 변수를 설정할 수 있습니다. 예를 들어 TZ 환경 변수를 추가하여 브로커 컨테이너의 시간대를 설정할 수 있습니다. 자세한 내용은 OpenShift에 AMQ Broker를 배포 할 때 브로커 컨테이너의 환경 변수 설정을 참조하십시오.
OpenShift Container Platform에서 프록시 전달 지원
OpenShift Container Platform의 AMQ Broker 7.11에서 AMQ Management Console을 호스팅하는 임베디드 웹 서버는 X-Forwarded 헤더를 처리하도록 사전 구성됩니다. X-Forwarded 헤더를 처리하여 AMQ Management Console은 프록시가 요청 경로에 있을 때 변경되거나 손실되는 헤더 정보를 수신할 수 있습니다. 예를 들어 AMQ Management Console은 HTTP를 사용하지만 프록시인 OpenShift Container Platform 라우터는 라우터에서 종료되는 HTTPS 경로를 사용하여 AMQ Management Console을 노출합니다. X-Forwarded 헤더에서 AMQ Management Console은 브라우저와 라우터 간 연결을 사용하여 HTTPS로 전환하고 HTTPS로 전환하여 브라우저 요청을 제공할 수 있습니다.
일부 재전송 속성은 brokerProperties CR 특성에서만 지원됩니다.

7.8.x 또는 7.9.x 배포에 spec.deploymentPlan.address>-<.addressSetting CR 요소에 구성된 redeliveryDelayMultiplier 또는 redeliveryCollisionAvoidanceFactor 속성이 있는 경우 7.11. x로 업그레이드한 후 brokerProperties CR 속성에 이러한 속성을 구성해야 합니다. 이는 두 속성의 데이터 유형이 7.10.0에서 문자열으로 변경되었기 때문에 필요합니다. 결과적으로 이러한 속성은 spec.deploymentPlan.address>-<.addressSetting 특성에서 더 이상 지원되지 않습니다.

다음 예제에서는 brokerProperties 요소에서 두 속성을 구성하는 방법을 보여줍니다.

spec:
  ...
  brokerProperties:
  - "addressSettings.#.redeliveryMultiplier=2.1"
  - "addressSettings.#.redeliveryCollisionAvoidanceFactor=1.2"
  ...
참고

brokerProperties 속성에서 spec.deploymentPlan.address>-<.addressSetting 요소에서 사용된 redeliveryDelayMultiplier 특성 이름 대신 redeliveryMultiplier 특성 이름을 사용합니다.

XML 외부 엔티티(XXE) 처리 비활성화
broker.xml 파일에 포함된 별도의 파일에 브로커 구성을 모듈화할 필요가 없는 경우 XXE 처리를 비활성화하여 XXE 보안 취약점으로부터 보호할 수 있습니다. 가능한 경우 XXE 처리를 비활성화할 것을 권장합니다. 자세한 내용은 AMQ Broker 구성에서 XXE(외부 XML 엔티티) 처리 비활성화 참조하십시오.
JGroups 5.x
7.10.0 이전의 AMQ Broker 버전은 CloudEvent 3.x를 사용했습니다. AMQ Broker 7.11은 CloudEvent 3.x와 호환되지 않는 CloudEvent 5.x를 사용합니다. 일부 프로토콜 및 프로토콜 속성이 두 가지 JGroup 버전 간에 변경되어 AMQ Broker 7.11로 업그레이드할 때 CloudEvent 스택 구성을 변경해야 할 수 있습니다.
특정 디렉터리 이름으로 추출된 AMQ Broker 아카이브의 콘텐츠
Red Hat Enterprise Linux에서 AMQ Broker 아카이브를 추출하면 아카이브 내용이 현재 디렉터리의 apache-artemis-2.28.0.redhat-00004 디렉터리에 추출됩니다.
Operator 채널

AMQ Broker Operator, Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) 은 다음 채널에서 사용할 수 있습니다.

  • 7.11.x - 이 채널은 버전 7.11에만 업데이트를 제공하며 장기 지원(LTS) 채널입니다.
  • 7.10.x - 이 채널은 버전 7.10에 대해서만 업데이트를 제공하며 장기 지원(LTS) 채널입니다.
참고

채널을 전환하여 Operator를 업그레이드할 수 없습니다. 기존 Operator를 설치 제거하고 적절한 채널에서 새 버전의 Operator를 설치해야 합니다.

선택할 Operator를 확인하려면 Red Hat Enterprise Linux Container Compatibility Matrix 를 참조하십시오.

Prometheus 지표 플러그인의 클래스 이름으로 변경
AMQ Broker 7.11에서 AMQ Broker에 포함된 Prometheus 지표 플러그인의 클래스 이름이 org.apache.activemq.artemis.core.core.metrics.plugins.ArtemisPrometheusMetricsPlugin 에서 com.redhat.amq.broker.core.plugins.ArtemisPrometheusMetric slugin 에서 변경되었습니다. 이전 버전의 AMQ Broker에서 Prometheus 메트릭 플러그인이 활성화된 경우 AMQ Broker 7.11로 업그레이드할 때 broker.xml 구성 파일에서 클래스 이름을 업데이트해야 합니다. 자세한 내용은 AMQ Broker 관리7.10.x에서 7.11.x로 브로커 인스턴스 업그레이드를 참조하십시오.
listProducers API 메서드 및 listProducersInfoAsJSONay 메서드에서 반환된 데이터 변경

AMQ Broker 7.11에서는 AMQ 관리 콘솔에서 사용하는 listProducers 메서드에서 데이터를 반환하는 방법에 대한 향상된 기능입니다.

  • 이전 버전에서 반환된 데이터에서 생산자가 세션당 표시되었습니다. 따라서 생성자당 두 세션을 생성하는 Core 프로토콜을 사용하여 생산자를 생성한 경우 두 세션마다 별도의 생산자가 표시됩니다. 또한 생산자에서 메시지를 보내지 않고 생산자를 생성한 경우 프로듀서에 대해 반환된 주소가 비어 있습니다. AMQ Broker 7.11에서 listProducers 메서드 는 코어 프로토콜에 의해 생성된 두 세션에 대해 단일 생산자를 반환합니다. 또한, 메시지를 보내기 전에 address 열에 올바른 주소를 표시합니다.
  • 이전에는 익명 생산자를 사용하여 Core 또는 AMQP 프로토콜을 사용하여 여러 주소로 메시지를 보낼 때 각 주소에 대해 생산자가 표시되었습니다. 또한 표시된 주소는 생산자가 메시지를 보낸 첫 번째 주소이며, 이로 인해 단일 큐로 보내는 일반 생산자처럼 표시되었습니다. AMQ Broker 7.11에서 익명 생산자를 사용하여 여러 주소로 메시지를 보내면 각 익명 생산자에 대해 단일 생산자가 표시됩니다. 또한 주소는 특정 주소에 연결되지 않으며 ANONYMOUS 의 값을 갖습니다.

이전에는 listProducersInfoAsJSON 메서드에서 특정 세션별로 각 큐에 전송된 메시지 수를 제공했습니다. 그러나 이 방법은 메시지를 보낸 각 큐에 대해 생산자를 잘못 반환했습니다. 예를 들어 익명 생산자가 1000개 대기열로 메시지를 보낸 경우 이 방법은 1000명의 생산자를 반환했습니다. AMQ Broker 7.11에서 listProducersInfoAsJSON 메서드에서 listProducers 메서드와 동일한 데이터를 다른 형식으로 반환합니다.

AMQ Broker 7.11에서는 다음과 같은 새 지표 데이터가 반환됩니다.

Consumer

MessageInTransit - 아직 승인되지 않은 전송 메시지 수

messagesInTransitSize - 아직 승인되지 않은 전송의 총 메시지 크기

messagesDelivered - 전송된 메시지 수

messagesDeliveredSize - 전송된 총 메시지 크기

messageAcknowledged - 확인되는 총 메시지 수

messagesAckledgedAwaitingCommit - 확인되었지만 커밋 대기 중인 트랜잭션의 총 메시지 수

lastDeliveredTime - 마지막 메시지의 시간(밀리초)

lastAcknowledgedTime - 마지막 메시지의 밀리초 단위 시간

생산자

msgSent - 생산자가 보낸 메시지 수

msgSizeSent - 생산자가 보낸 메시지의 총 크기

lastProducedMessageID - 전송된 마지막 메시지의 ID