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에 저장된 데이터는 바이트 기반이므로 testPayloadbyte[] 로 변환될 수 있어야 합니다.

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에 저장된 데이터는 바이트 기반이므로 testPayloadbyte[] 로 변환될 수 있어야 합니다.

Object testPayload = ...
template.sendBodyAndHeader("direct:create-and-write-to-persistent-znode", testPayload, "CamelZooKeeperCreateMode", "PERSISTENT");