9.3. Spring Boot Narayana 복구 컨트롤러 구성
다음 예제에서는 복구 컨트롤러를 사용하여 OpenShift에서 작동하도록narayana를 구성하는 방법을 보여줍니다.
프로세스
샘플
application.properties
파일입니다. Kubernetes yaml 설명자에서 다음 옵션을 교체합니다.# Cluster cluster.nodename=1 cluster.base-dir=./target/tx # Transaction Data spring.jta.transaction-manager-id=${cluster.nodename} spring.jta.log-dir=${cluster.base-dir}/store/${cluster.nodename} # Narayana recovery settings snowdrop.narayana.openshift.recovery.enabled=true snowdrop.narayana.openshift.recovery.current-pod-name=${cluster.nodename} # You must enable resource filtering in order to inject the Maven artifactId snowdrop.narayana.openshift.recovery.statefulset=${project.artifactId} snowdrop.narayana.openshift.recovery.status-dir=${cluster.base-dir}/status
종료와 관련된 트랜잭션 및 정보를 모두 저장하려면 공유 볼륨이 필요합니다. 다음과 같이 StatefulSet yaml 설명자에 마운트할 수 있습니다.
apiVersion: apps/v1 kind: StatefulSet #... spec: #... template: #... spec: containers: - env: - name: CLUSTER_BASE_DIR value: /var/transaction/data # Override CLUSTER_NODENAME with Kubernetes Downward API (to use `pod-0`, `pod-1` etc. as tx manager id) - name: CLUSTER_NODENAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name #... volumeMounts: - mountPath: /var/transaction/data name: the-name-of-the-shared-volume #...
Camel Extension for Spring Bootnaana Recovery Controller
Camel이 Spring Boot 애플리케이션 컨텍스트에서 발견되면 보류 중인 모든 트랜잭션을 플러시하기 전에 Camel 컨텍스트가 자동으로 중지됩니다.