384.4.3. znode에 쓰기
다음 스니펫은 이미 존재하는 경우 교환의 페이로드를 /somepath/somenode/
의 znode에 작성합니다.
from("direct:write-to-znode") .to("zookeeper://localhost:39913/somepath/somenode");
유연성을 위해 끝점을 사용하면 대상 znode 를 메시지 헤더로 동적으로 지정할 수 있습니다. CamelZooKeeperNode
문자열로 키를 가진 헤더가 있는 경우 헤더 값이 서버의 znode 경로로 사용됩니다. 예를 들어 위의 동일한 경로 정의를 사용하는 경우 다음 코드 스니펫은 /somepath/somenode
에 없는 데이터를 /somepath/someothernode
헤더의 경로에 기록합니다.
ZooKeeper에 저장된 데이터는 바이트 기반이므로 testPayload
는 byte[]
로 변환될 수 있어야 합니다.
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");
버전 2.11 부터 DELETE
로 설정하여 CamelZookeeperOperation
헤더를 사용하여 노드를 삭제 할 수도 있습니다.
from("direct:delete-znode") .setHeader(ZooKeeperMessage.ZOOKEEPER_OPERATION, constant("DELETE")) .to("zookeeper://localhost:39913/somepath/somenode");
또는 다음과 같습니다.
<route> <from uri="direct:delete-znode" /> <setHeader headerName="CamelZookeeperOperation"> <constant>DELETE</constant> </setHeader> <to uri="zookeeper://localhost:39913/somepath/somenode" /> </route>
zookeeper 노드는 다른 유형이 있을 수 있습니다. '임시' 또는 '영구' 또는 '일관됨'일 수 있습니다. 각 유형에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 기본적으로 끝점은 비sequenced 임시 노드를 생성하지만 유형은 uri config 매개 변수 또는 특수 메시지 헤더를 통해 쉽게 조작할 수 있습니다. create 모드에 예상되는 값은 CreateMode
열거형의 이름일 뿐입니다.
-
PERSISTENT
-
PERSISTENT_SEQUENTIAL
-
임시
-
EPHEMERAL_SEQUENTIAL
예를 들어 URI 구성을 통해 영구 znode 를 생성하려면 다음을 수행합니다.
from("direct:create-and-write-to-persistent-znode") .to("zookeeper://localhost:39913/somepath/somenode?create=true&createMode=PERSISTENT");
또는 헤더 CamelZookeeperCreateMode
를 사용합니다.
ZooKeeper에 저장된 데이터는 바이트 기반이므로 testPayload
는 byte[]
로 변환될 수 있어야 합니다.
Object testPayload = ... template.sendBodyAndHeader("direct:create-and-write-to-persistent-znode", testPayload, "CamelZooKeeperCreateMode", "PERSISTENT");