385.4. 사용 사례
385.4.1. znode에서 읽기 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫은 이미 존재하는 경우 znode/somepath/somenode/
에서 데이터를 읽습니다. 검색된 데이터는 교환으로 배치되고 경로의 나머지 부분에 전달됩니다.
from("zookeeper://localhost:39913/somepath/somenode").to("mock:result");
from("zookeeper://localhost:39913/somepath/somenode").to("mock:result");
노드가 아직 존재하지 않으면 끝점이 생성을 대기하도록 플래그를 제공할 수 있습니다.
from("zookeeper://localhost:39913/somepath/somenode?awaitCreation=true").to("mock:result");
from("zookeeper://localhost:39913/somepath/somenode?awaitCreation=true").to("mock:result");
385.4.2. znode 에서 읽기(추가 Camel 2.10 이후) 링크 복사링크가 클립보드에 복사되었습니다!
Zoo Cryostat ensemble에서 수신된
로 인해 데이터를 읽을 때 WatchedEvent
CamelZookeeperEventType
헤더는 WatchedEvent 로부터 Zoo Cryostat의 EventType
값을 보유합니다. 데이터를 처음에 읽히는 경우( WatchedEvent
)에 의해 트리거되지 않은 경우 CamelZookeeperEventType
헤더가 설정되지 않습니다.
385.4.3. znode에 쓰기 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫에서는 이미 존재하는 경우 /somepath/somenode/
의 znode에 대한 페이로드를 작성합니다.
from("direct:write-to-znode") .to("zookeeper://localhost:39913/somepath/somenode");
from("direct:write-to-znode")
.to("zookeeper://localhost:39913/somepath/somenode");
유연성을 위해 끝점을 사용하면 대상 znode 를 메시지 헤더로 동적으로 지정할 수 있습니다. CamelZoo CryostatNode 문자열에
의해 키가 지정된 헤더가 있으면 헤더 값이 서버의 znode 경로로 사용됩니다. 예를 들어 위의 동일한 경로 정의를 사용하는 경우 다음 코드 조각은 /somepath/somenode
에 데이터가 아니라 /somepath/someothernode
헤더의 경로에 데이터를 작성합니다.
testPayload
는 Zoo Cryostat에 저장된 데이터가 바이트
기반이므로 바이트로 변환할 수 있어야 합니다.
Object testPayload = ... template.sendBodyAndHeader("direct:write-to-znode", testPayload, "CamelZooKeeperNode", "/somepath/someothernode");
Object testPayload = ...
template.sendBodyAndHeader("direct:write-to-znode", testPayload, "CamelZooKeeperNode", "/somepath/someothernode");
또한 노드가 없는 경우 노드를 생성하려면 create
옵션을 사용해야 합니다.
from("direct:create-and-write-to-znode") .to("zookeeper://localhost:39913/somepath/somenode?create=true");
from("direct:create-and-write-to-znode")
.to("zookeeper://localhost:39913/somepath/somenode?create=true");
버전 2.11 을 시작하여 CamelZookeeperOperation
헤더를 사용하여 노드를 DELETE
로 설정할 수도 있습니다.
from("direct:delete-znode") .setHeader(ZooKeeperMessage.ZOOKEEPER_OPERATION, constant("DELETE")) .to("zookeeper://localhost:39913/somepath/somenode");
from("direct:delete-znode")
.setHeader(ZooKeeperMessage.ZOOKEEPER_OPERATION, constant("DELETE"))
.to("zookeeper://localhost:39913/somepath/somenode");
또는 이와 동등한 경우:
Zookeeper 노드는 유형이 다를 수 있습니다. '임시(Ephememeral)' 또는 'Persistent' 및 'Sequenced' 또는 'Unsequenced'일 수 있습니다. 각 유형에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 기본적으로 끝점은 unsequenced 임시 노드를 생성하지만 유형은 uri config 매개변수 또는 특수 메시지 헤더를 통해 쉽게 조작할 수 있습니다. 생성 모드에 예상되는 값은 CreateMode
열거의 이름입니다.
-
PERSISTENT
-
PERSISTENT_SEQUENTIAL
-
EPHEMERAL
-
EPHEMERAL_SEQUENTIAL
예를 들어 URI 구성을 통해 영구 znode 를 생성하려면 다음을 수행합니다.
from("direct:create-and-write-to-persistent-znode") .to("zookeeper://localhost:39913/somepath/somenode?create=true&createMode=PERSISTENT");
from("direct:create-and-write-to-persistent-znode")
.to("zookeeper://localhost:39913/somepath/somenode?create=true&createMode=PERSISTENT");
또는 CamelZookeeperCreateMode
헤더를 사용합니다.
testPayload
는 Zoo Cryostat에 저장된 데이터가 바이트
기반이므로 바이트로 변환할 수 있어야 합니다.
Object testPayload = ... template.sendBodyAndHeader("direct:create-and-write-to-persistent-znode", testPayload, "CamelZooKeeperCreateMode", "PERSISTENT");
Object testPayload = ...
template.sendBodyAndHeader("direct:create-and-write-to-persistent-znode", testPayload, "CamelZooKeeperCreateMode", "PERSISTENT");