4.2. Operator 기반 브로커 배포를 위한 주소 및 대기열 구성
4.2.1. 주소 및 큐 구성 링크 복사링크가 클립보드에 복사되었습니다!
브로커 배포에 ActiveMQArtemis CR 인스턴스에서 brokerProperties 속성을 사용하여 주소 및 큐를 구성할 수 있습니다. 또는 ActiveMQArtemisAddress CR에서 주소와 큐를 구성할 수 있습니다.
ActiveMQArtemisAddress CR은 AMQ Broker 7.12에서 더 이상 사용되지 않습니다.
brokerProperties를 사용하여 주소 및 대기열 구성
brokerProperties 속성 아래에 주소와 큐를 구성하고 사용자가 생성하는 각 큐에 대한 설정도 구성할 수 있습니다.
사전 요구 사항
기본 브로커 배포를 생성하셨습니다. 자세한 내용은 3.4.1절. “기본 브로커 인스턴스 배포”의 내용을 참조하십시오.
프로세스
-
브로커 배포에 사용할
ActiveMQArtemisCR 인스턴스를 편집합니다. CR의
spec섹션에서 CR에 아직 없는 경우brokerProperties속성을 추가합니다.spec: ... brokerProperties: ...형식으로 주소를 구성합니다.
- addressConfigurations.<주소 이름>.routingTypes=<라우팅 유형>예를 들면 다음과 같습니다.
spec: ... brokerProperties: - addressConfigurations.usa-news-address.routingTypes=MULTICAST ...형식으로 생성한 주소에 대한 큐를 구성합니다.
- addressConfigurations.<주소 이름>.queueConfigs.<큐 이름>.address<address>중요.address설정의 <address> 값은 생성한 각 큐에 대해 <주소 이름>과 일치해야 합니다. 이러한 값이 다른 경우 각각에 대해 별도의 주소가 생성됩니다. 다음 예에서 주소 이름과.address설정의 모두usa-news-address의 값과 동일합니다.spec: ... brokerProperties: - addressConfigurations.usa-news-address.queueConfigs.usa-news-queue.address=usa-news-address ...형식으로 큐에 대해 구성할 각 설정에 대해 별도의 행을 추가합니다.
- addressConfigurations.<주소 이름>.queueConfigs.<큐 이름>.<큐 설정>
예를 들면 다음과 같습니다.
spec: ... brokerProperties: - addressConfigurations.usa-news-address.queueConfigs.usa-news-queue.routingType=ANYCAST - addressConfigurations.usa-news-address.queueConfigs.usa-news-queue.purgeOnNoConsumers=true - addressConfigurations.usa-news-address.queueConfigs.usa-news-queue.maxConsumers=20 ...- CR을 저장합니다.
-
ActiveMQArtemisCR의status섹션을 검토하여brokerProperties구성에서 오류가 감지되지 않았는지 확인합니다. 자세한 내용은 2.4절. “CRD(사용자 정의 리소스 정의)에 노출되지 않은 항목 구성”의 내용을 참조하십시오.
ActiveMQArtemisAddress CR에서 주소 및 큐 구성
ActiveMQArtemisAddress CR에서 주소와 큐를 구성할 수 있습니다. 브로커 배포에서 여러 주소 및/또는 큐를 구성하려면 별도의 CR 인스턴스를 생성하고 개별적으로 배포하여 각 경우에 새 주소 및/또는 큐 이름을 지정해야 합니다. 또한 각 CR 인스턴스의 name 속성은 고유해야 합니다.
사전 요구 사항
AMQ Broker Operator를 설치하여 브로커에 주소와 큐를 생성하는 데 필요한 CRD(사용자 정의 리소스 정의)를 설치했습니다. Operator를 설치하는 두 가지 대체 방법에 대한 자세한 내용은 다음을 참조하십시오.
- CR 인스턴스를 사용하여 기본 브로커 배포를 생성하는 방법을 잘 알고 있습니다. 자세한 내용은 3.4.1절. “기본 브로커 인스턴스 배포”의 내용을 참조하십시오.
프로세스
브로커 배포에 대한 주소 및 큐를 정의하도록 CR(사용자 정의 리소스) 인스턴스 구성을 시작합니다.
OpenShift 명령줄 인터페이스 사용:
브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.
oc login -u <user> -p <password> --server=<host:port>-
다운로드 및 추출한 Operator 설치 아카이브의
deploy/crs디렉터리에 포함된broker_activemqartemisaddress_cr.yaml이라는 샘플 CR 파일을 엽니다.
OpenShift Container Platform 웹 콘솔 사용:
- 브로커 배포를 위해 프로젝트에 CR을 배포할 권한이 있는 사용자로 콘솔에 로그인합니다.
-
주소 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서
를 클릭합니다. - ActiveMQArtemisAddresss CRD를 클릭합니다.
- Instances 탭을 클릭합니다.
Create ActiveMQArtemisAddress 를 클릭합니다.
콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.
CR의
spec섹션에서 주소, 큐 및 라우팅 유형을 정의하는 행을 추가합니다. 예를 들면 다음과 같습니다.apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemisAddress metadata: name: myAddressDeployment0 namespace: myProject spec: ... addressName: myAddress0 queueName: myQueue0 routingType: anycast ...이전 구성은
myQueue0큐와anycast라우팅 유형으로myAddress0이라는 주소를 정의합니다.참고metadata섹션에는namespace속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.CR 인스턴스를 배포합니다.
OpenShift 명령줄 인터페이스 사용:
- CR 파일을 저장합니다.
브로커 배포를 위해 프로젝트로 전환합니다.
$ oc project <project_name>CR 인스턴스를 생성합니다.
$ oc create -f <path/to/address_custom_resource_instance>.yaml
OpenShift 웹 콘솔 사용:
- CR 구성을 완료하면 생성 을 클릭합니다.
4.2.2. 주소 설정 구성 링크 복사링크가 클립보드에 복사되었습니다!
주소 설정 그룹을 구성하고 다음 방법 중 하나를 사용하여 설정을 적용하는 주소 기준을 지정할 수 있습니다.
-
브로커 배포에
ActiveMQArtemisCR 인스턴스에서brokerProperties속성을 사용하여 주소를 구성하는 경우brokerProperties속성에서 주소 설정을 구성할 수도 있습니다. -
ActiveMQArtemisAddressCR 인스턴스에서 주소를 구성하는 경우ActiveMQArtemisCR의addressSettings섹션에서 주소 설정을 구성할 수 있습니다.
다음 예제에서는 두 방법을 모두 사용하여 특정 주소 패턴에 대해 dead letter address 및 queue를 구성하는 방법을 보여줍니다. 브로커에서 dead letter address 및 queue를 사용하여 무한 전송 시도를 방지하기 위해 클라이언트에 전달할 수 없는 메시지를 저장할 수 있습니다. 시스템 관리자는 나중에 dead letter queue에서 전달되지 않은 메시지를 사용하여 메시지를 검사할 수 있습니다.
사전 요구 사항
-
브로커를 배포하기 위해
ActiveMQArtemisCR 인스턴스를 생성하셨습니다. 자세한 내용은 3.4.1절. “기본 브로커 인스턴스 배포”의 내용을 참조하십시오. - Operator가 병합하거나 CR 인스턴스에 지정된 구성으로 교체하는 기본 주소 설정 구성에 대해 잘 알고 있습니다. 자세한 내용은 4.1.1절. “Operator에서 주소 설정 구성을 생성하는 방법”의 내용을 참조하십시오.
brokerProperties를 사용하여 주소 설정 구성
-
브로커 배포에 사용할
ActiveMQArtemisCR 인스턴스를 편집합니다. 배달되지 않은 메시지를 수신하기 위해 dead letter address 및 queue를 만듭니다. 예를 들면 다음과 같습니다.
spec: ... brokerProperties: ... - addressConfigurations.usDeadLetter.routingTypes=MULTICAST - addressConfigurations.usDeadLetter.queueConfigs.usDeadLetter-queue.address=usDeadLetterbrokerProperties를 사용하여 주소 및 큐 생성에 대한 자세한 내용은 4.2.1절. “주소 및 큐 구성” 을 참조하십시오.addressSettings.< 주소이름>.< 주소 설정 > 의brokerProperties속성 아래에 별도의 행을 추가합니다.- 생성된 dead letter address를 dead letter address로 설정합니다.
배달 시도 횟수를 지정한 후 일치하는 주소로 전달할 수 없는 메시지를 dead letter 주소로 보냅니다.
예를 들면 다음과 같습니다.
spec: ... brokerProperties: ... - addressSettings.usa-news.deadLetterAddress=usDeadLetter - addressSettings.usa-news.maxDeliveryAttempts=5 ...별표(*) 또는 숫자 기호(#) 문자를 와일드카드로 사용하여 주소 패턴을 만들 수 있습니다. 패턴의 일치는 마침표(.)로 표시되는 각 구분 기호 경계에서 수행됩니다. 숫자 기호 문자는 0개 이상의 단어와 일치하며 주소 문자열 끝에 사용할 수 있습니다. 별표 문자는 단일 단어와 일치하며 address 문자열 내의 모든 위치에서 사용할 수 있습니다. 예를 들면 다음과 같습니다.
spec: ... brokerProperties: ... - addressSettings."usa-news.*".deadLetterAddress=usDeadLetter - addressSettings."europe-news.#".deadLetterAddress=euDeadLetter ...이전 예에서 다음 주소가 일치합니다.
-
usa-news.*주소 패턴은usa-news.domestic및과 같이 usa-news.politics 문자열과 일치하지만usa-news.intlusa-news.domestic.politics. europe-news.#주소 패턴은 europe-news ,europe-news.politics 및.europe-news.politicsfr과 같이 europe-news로 시작하는 모든 주소와 일치합니다.참고brokerProperties항목에서 마침표(.)는 예약된 문자입니다. 마침표가 포함된 주소 패턴을 만들려면 주소를 따옴표로 묶어야 합니다. 예: "usa-news.*"
- CR을 저장합니다.
-
ActiveMQArtemisCR의status섹션을 검토하여brokerProperties구성에서 오류가 감지되지 않았는지 확인합니다. 자세한 내용은 2.4절. “CRD(사용자 정의 리소스 정의)에 노출되지 않은 항목 구성”의 내용을 참조하십시오.
ActiveMQArtemis CR 인스턴스에서 addressSettings 를 사용하여 주소 설정 구성
ActiveMQArtemisAddress CR에 dead letter address 및 queue를 구성한 경우 브로커 배포에 대한 ActiveMQArtemis CR 인스턴스에서 전달 시도를 제한하도록 설정을 구성할 수 있습니다.
사전 요구 사항
다음 세부 정보를 사용하여 주소와 큐를 생성했습니다.
addressName: myDeadLetterAddress
queueName: myDeadLetterQueue
routingType: anycast
주소 및 큐 생성에 대한 자세한 내용은 다음을 참조하십시오. 4.2.1절. “주소 및 큐 구성”
프로세스
브로커 배포에 사용할
ActiveMQArtemisCR 인스턴스를 편집합니다.oc edit ActiveMQArtemis <CR instance name> -n <namespace>- OpenShift Container Platform 웹 콘솔 사용:
- 브로커 배포를 위해 프로젝트에 CR을 배포할 권한이 있는 사용자로 콘솔에 로그인합니다.
-
왼쪽 창에서
를 클릭합니다. - Red Hat Integration - AMQ Broker for RHEL 8 (Multiarch) Operator를 클릭합니다.
- AMQ Broker 탭을 클릭합니다.
- ActiveMQArtemis 인스턴스 이름의 이름을 클릭합니다.
YAML 탭을 클릭합니다.
콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 편집할 수 있습니다.
참고metadata섹션에는namespace속성을 포함하고 OpenShift Container Platform 웹 콘솔을 사용하여 CR 인스턴스를 생성하는 경우에만 값을 지정해야 합니다. 지정해야 하는 값은 브로커 배포를 위한 OpenShift 프로젝트의 이름입니다.CR의
spec섹션에서 다음과 같이 단일addressSetting섹션이 포함된 새addressSettings섹션을 추가합니다.spec: ... addressSettings: addressSetting:addressSetting블록에match속성의 단일 인스턴스를 추가합니다. 주소 일치 표현식을 지정합니다. 예를 들면 다음과 같습니다.spec: ... addressSettings: addressSetting: - match: myAddressmatch-
브로커가 다음 구성을 적용하는 주소 또는 주소를 지정합니다. 이 예제에서
match속성의 값은myAddress라는 단일 주소에 해당합니다.
전달되지 않은 메시지와 관련된 속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.
spec: ... addressSettings: addressSetting: - match: myAddress deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 5deadLetterAddress- 브로커가 전달되지 않은 메시지를 보내는 주소입니다.
maxDeliveryAttempts구성된 dead letter 주소로 메시지를 이동하기 전에 브로커가 수행하는 최대 전달 시도 수입니다.
이전 예에서 브로커가
myAddress로 시작하는 주소로 5번 메시지를 전달하려고 하면 브로커는 지정된 dead letter address인myDeadLetterAddress로 메시지를 이동합니다.
(선택 사항) 다른 주소 또는 주소 집합에 유사한 구성을 적용합니다. 예를 들면 다음과 같습니다.
spec: ... addressSettings: addressSetting: - match: myAddress deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 5 - match: 'myOtherAddresses#' deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 3이 예제에서 두 번째
match속성 값에는 해시 와일드카드 문자가 포함됩니다. 와일드카드 문자는 이전 구성이myOtherAddresses문자열로 시작하는 모든 주소에 적용됨을 의미합니다.참고와일드카드 표현식을
match속성의 값으로 사용하는 경우, 값을 작은따옴표로 묶어야 합니다(예:'myOtherAddresses#').addressSettings섹션의 시작 부분에applyRule속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.spec: ... applyRule: merge_all addressSetting: - match: myAddress deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 5 - match: 'myOtherAddresses#' deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 3applyRule속성은 Operator가 일치하는 주소 또는 주소 집합에 대해 CR에 추가하는 구성을 적용하는 방법을 지정합니다. 지정할 수 있는 값은 다음과 같습니다.merge_allCR 및 기본 구성에 모두 지정된 주소 설정의 경우 동일한 주소 또는 주소 집합과 일치하는 기본 구성입니다.
- 기본 구성에 지정된 속성 값을 CR에 지정된 속성 값으로 바꿉니다.
- CR 또는 기본 구성에 고유하게 지정된 속성 값을 유지합니다. 각 항목을 최종 병합된 구성에 포함합니다.
- CR 또는 특정 주소 또는 주소 집합과 일치하는 기본 구성에 지정된 주소 설정의 경우 이를 최종 병합된 구성에 포함합니다.
merge_replace- CR 및 동일한 주소 또는 주소 집합과 일치하는 기본 구성에 지정된 주소 설정의 경우 CR 에 지정된 설정을 최종 병합된 구성에 포함합니다. CR에 지정되지 않은 경우에도 기본 구성에 지정된 속성은 포함하지 마십시오.
- CR 또는 특정 주소 또는 주소 집합과 일치하는 기본 구성에 지정된 주소 설정의 경우 이를 최종 병합된 구성에 포함합니다.
replace_all- 기본 구성에 지정된 모든 주소 설정을 CR에 지정된 주소로 바꿉니다. 최종 병합 구성은 CR에 지정된 것과 정확히 일치합니다.
참고CR에
applyRule속성을 명시적으로 포함하지 않으면 Operator는 기본값merge_all을 사용합니다.- CR 인스턴스를 저장합니다.
4.2.2.1. 구성 가능한 주소 및 큐 설정 링크 복사링크가 클립보드에 복사되었습니다!
일반적으로 OpenShift Container Platform에서 브로커 배포를 위해 구성할 수 있는 주소 및 큐 설정은 Linux 또는 Windows의 독립 실행형 브로커 배포와 완전히 동일합니다. 그러나 이러한 설정을 구성하는 방법의 몇 가지 차이점을 알고 있어야 합니다. 이러한 차이점은 다음 하위 섹션에 설명되어 있습니다.
-
OpenShift Container Platform에서 브로커 배포에 대한 주소 및 큐 설정을 구성하려면 브로커 배포의 기본 CR(사용자 정의 리소스) 인스턴스의
addressSettings섹션에 구성을 추가합니다. 이는 Linux 또는 Windows의 독립 실행형 배포와 대조됩니다. 이 배포는broker.xml구성 파일의address-settings요소에 구성을 추가합니다. 구성 항목 이름에 사용되는 형식은 OpenShift Container Platform과 독립 실행형 브로커 배포 간에 다릅니다. OpenShift Container Platform 배포의 경우 구성 항목 이름은 camel 경우입니다 (예:
defaultQueueRoutingType). 반대로 독립 실행형 배포의 구성 항목 이름은 소문자이며 대시(--) 구분 기호(예:default)를 사용합니다.-queue-routing-type다음 표에서는 이 이름 지정 차이에 대한 몇 가지 추가 예를 보여줍니다.
Expand 표 4.2. 구성 항목의 이름의 차이점 예 독립 실행형 브로커 배포를 위한 구성 항목 OpenShift 브로커 배포를 위한 구성 항목 address-full-policy
addressFullPolicy
auto-create-queues
autoCreateQueues
default-queue-routing-type
defaultQueueRoutingType
last-value-queue
lastValueQueue
추가 리소스
OpenShift Container Platform 브로커 배포에 대한 주소 및 대기열 및 일치하는 설정을 생성하는 예는 다음을 참조하십시오.
- OpenShift Container Platform 브로커 배포의 주소, 큐 및 주소 설정에 대한 모든 구성 옵션에 대한 자세한 내용은 8.1절. “사용자 정의 리소스 구성 참조” 을 참조하십시오.
- 독립 실행형 브로커 배포를 위한 주소, 큐 및 관련 주소 설정에 대한 포괄적인 정보는 AMQ Broker 구성에서 주소 및 큐 구성을 참조하십시오. 이 정보를 사용하여 OpenShift Container Platform의 브로커 배포에 대해 동등한 구성을 생성할 수 있습니다.
4.2.3. 주소 및 큐 삭제 링크 복사링크가 클립보드에 복사되었습니다!
주소 및 큐를 생성하는 방법에 따라 브로커 배포에 대해 ActiveMQArtemis CR에서 brokerProperties 항목을 제거하거나 CR을 사용하여 주소와 큐를 삭제할 수 있습니다.
ActiveMQArtemis Address
brokerProperties를 사용하여 생성된 주소 및 큐 삭제
brokerProperties 속성의 에서 항목을 제거하여 개별 주소 및 큐를 삭제할 수 있습니다.
사전 요구 사항
- 기본 브로커 배포를 생성하셨습니다. 자세한 내용은 3.4.1절. “기본 브로커 인스턴스 배포”의 내용을 참조하십시오.
프로세스
-
브로커 배포에 사용할
ActiveMQArtemisCR 인스턴스를 편집합니다. 다음
brokerProperties항목을 추가하여 브로커가 숫자 기호(#) 및 CR에서 더 이상 찾을 수 없는 연결된 큐로 표시되는 주소를 삭제할 수 있습니다.spec: ... brokerProperties: - addressSettings.#.configDeleteAddresses=FORCE - addressSettings.#.configDeleteQueues=FORCE ...brokerProperties속성에서 제거할 주소와 큐를 참조하는 모든 행을 삭제합니다. 예를 들어usa-news주소를 참조하는 모든 행을 삭제하여 이 주소와 큐를 제거합니다.spec: ... brokerProperties: - addressConfigurations.usa-news.queueConfigs.usa-news-queue.routingType=MULTICAST - addressConfigurations.usa-news.queueConfigs.usa-news-queue.purgeOnNoConsumers=true - addressConfigurations.usa-news.queueConfigs.usa-news-queue.maxConsumers=20 ...CR을 저장합니다.
브로커가 업데이트된 구성을 적용하면 CR에서 제거한 주소와 큐를 삭제합니다.
ActiveMQArtemisAddress CR에서 주소 및 큐 삭제
CR에서 주소와 큐를 생성한 경우 ActiveMQArtemisAddress CR에서 주소 및 큐를 삭제할 수 있습니다.
프로세스
삭제할 주소 및 큐의
이름,addressName및queueName과 같은 세부 정보가 있는 주소 CR 파일이 있는지 확인합니다. 예를 들면 다음과 같습니다.apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemisAddress metadata: name: myAddressDeployment0 namespace: myProject spec: ... addressName: myAddress0 queueName: myQueue0 routingType: anycast ...address CR의
spec섹션에서removeFromBrokerOnDelete속성을 추가하고true값으로 설정합니다... spec: addressName: myAddress1 queueName: myQueue1 routingType: anycast removeFromBrokerOnDelete: trueremoveFromBrokerOnDelete속성을true로 설정하면 주소 CR을 삭제할 때 Operator에서 배포의 모든 브로커에 대한 주소 및 관련 메시지가 제거됩니다.업데이트된 주소 CR을 적용하여 삭제하려는 주소에 대한
removeFromBrokerOnDelete속성을 설정합니다.$ oc apply -f <path/to/address_custom_resource_instance>.yaml주소 CR을 삭제하여 배포의 브로커에서 주소를 삭제합니다.
$ oc delete -f <path/to/address_custom_resource_instance>.yaml
추가 리소스
- OpenShift Container Platform 브로커 배포의 주소, 큐 및 주소 설정에 대한 모든 구성 옵션에 대한 자세한 내용은 8.1절. “사용자 정의 리소스 구성 참조” 을 참조하십시오.
OpenShift CLI(명령줄 인터페이스)를 사용하여 AMQ Broker Operator를 설치한 경우 다운로드 및 추출한 설치 아카이브에는 주소 설정 구성에 대한 몇 가지 추가 예가 포함되어 있습니다. 설치 아카이브의
deploy/examples폴더에서 다음을 참조하십시오.-
artemis-basic-address-settings-deployment.yaml -
artemis-merge-replace-address-settings-deployment.yaml -
artemis-replace-address-settings-deployment.yaml
-
- 독립 실행형 브로커 배포를 위한 주소, 큐 및 관련 주소 설정에 대한 포괄적인 정보는 AMQ Broker 구성에서 주소 및 큐 구성을 참조하십시오. 이 정보를 사용하여 OpenShift Container Platform의 브로커 배포에 대해 동등한 구성을 생성할 수 있습니다.
- OpenShift Container Platform의 Init Container에 대한 자세한 내용은 OpenShift Container Platform 설명서에 Pod를 배포하기 전에 Init Container를 사용하여 작업을 수행합니다.