xbase acff8b80c8 增加watch 2 주 전
..
client1 acff8b80c8 增加watch 2 주 전
client2 acff8b80c8 增加watch 2 주 전
node1 acff8b80c8 增加watch 2 주 전
node2 acff8b80c8 增加watch 2 주 전
README.md acff8b80c8 增加watch 2 주 전

README.md

Multi-Node Watch Example

This example demonstrates how to use the WebHook notification feature in a 2-node Raft cluster. Each client registers to a specific node watching different keys, demonstrating independent notification channels.

Architecture

  • Cluster: 2 Nodes
    • Node 1: Raft Port 9500, HTTP API Port 8500
    • Node 2: Raft Port 9501, HTTP API Port 8501
  • Clients: 2 Listeners
    • Client 1: Listens on 9600, Subscribes to Node 1 for key-1
    • Client 2: Listens on 9601, Subscribes to Node 2 for key-2

Running the Example

You will need 4 terminal windows.

1. Start the Cluster Nodes

Terminal 1 (Node 1):

cd example/watch/node1
go run main.go

Terminal 2 (Node 2):

cd example/watch/node2
go run main.go

Wait a moment for them to elect a leader.

2. Start the Clients

Terminal 3 (Client 1):

cd example/watch/client1
go run main.go

This will start a listener and auto-subscribe to Node 1 for key-1.

Terminal 4 (Client 2):

cd example/watch/client2
go run main.go

This will start a listener and auto-subscribe to Node 2 for key-2.

3. Trigger Data Changes

You can trigger changes by sending a request to ANY node's HTTP API. Since the clients are watching different keys, you can target specific clients.

Trigger Client 1 (via Node 1):

# Sets key-1, Client 1 should notify
curl -X POST http://127.0.0.1:8500/kv \
     -H "Content-Type: application/json" \
     -d '{"key": "key-1", "value": "hello-client-1"}'

Trigger Client 2 (via Node 1):

# Sets key-2, replicated to Node 2, Client 2 should notify
curl -X POST http://127.0.0.1:8500/kv \
     -H "Content-Type: application/json" \
     -d '{"key": "key-2", "value": "hello-client-2"}'

4. Expected Output

  • When you set key-1, only Client 1 should output a notification.
  • When you set key-2, only Client 2 should output a notification.

This demonstrates that notifications are filtered by key and dispatched locally by the node holding the subscription, even though the data is consistent across the entire cluster.