384.4. 사용 사례
384.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");
384.4.2. znode 에서 읽기 (추가 Camel 2.10 이후) 링크 복사링크가 클립보드에 복사되었습니다!
ZooKeeper ensemble에서 수신된
로 인해 데이터를 읽을 때 WatchedEvent
CamelZookeeperEventType
헤더는 해당 WatchedEvent에서 ZooKeeper의 EventType
값을 보유합니다. 데이터를 처음에 읽히면 ( WatchedEvent
) CamelZookeeperEventType
헤더가 설정되지 않습니다.
384.4.3. znode에 쓰기 링크 복사링크가 클립보드에 복사되었습니다!
다음 스니펫에서는 이미 존재하는 경우 /somepath/somenode/
의 vnode에 교환 페이로드를 작성합니다.
from("direct:write-to-znode") .to("zookeeper://localhost:39913/somepath/somenode");
from("direct:write-to-znode")
.to("zookeeper://localhost:39913/somepath/somenode");
유연성을 위해 끝점을 사용하면 대상 znode 를 메시지 헤더로 동적으로 지정할 수 있습니다. CamelZooKeeperNode
문자열에 의해 키되는 헤더가 있는 경우 헤더의 값이 서버의 znode 경로로 사용됩니다. 예를 들어 위의 동일한 경로 정의를 사용하는 경우 다음 코드 조각은 /somepath/somenode
에 데이터가 아니라 헤더 /somepath/someothernode
의 경로에 데이터를 작성합니다.
testPayload
는 ZooKeeper에 저장된 데이터가 바이트 기반이므로 byte[]
로 변환할 수 있어야 합니다.
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 부터는 DELETE
로 설정하여 CamelZookeeperOperation
헤더를 사용하여 노드를 삭제 할 수도 있습니다.
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 노드는 다른 유형을 가질 수 있습니다. 'Ephemer' 또는 'Persistent' 및 'Sequenced' 또는 'sequenced'일 수 있습니다. 각 유형에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 기본적으로 끝점은 처리되지 않은 임시 노드를 생성하지만 uri config 매개변수 또는 특수 message 헤더를 통해 유형을 쉽게 조작할 수 있습니다. 만들기 모드에서 예상되는 값은 CreateMode
ECDHE의 이름일 뿐입니다.
-
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
는 ZooKeeper에 저장된 데이터가 바이트 기반이므로 byte[]
로 변환할 수 있어야 합니다.
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");