single domain example¶
prerequisites¶
See domain example
create domain¶
Create a directory where you want your domain to “live”.
In production you probably want to have a dedicated user for a domain and just use the “domain-user” home directory as the domain root
Copy the domain setup from the example:
$ cd <your domain directory>
$ cp -r $CASAUL_HOME/documentation/example/domain/single/* .
Edit domain.env
so it corresponds to your setup.
Source the env file:
$ source domain.env
start domain¶
$ casual domain --boot configuration/domain.yaml
inspect the domain¶
$ casual queue --list-queues
name group rc rd count size avg EQ DQ UC last
-------- ----- -- -------- ----- ---- --- -- -- -- ----
a1 A 0 0.000000 0 0 0 0 0 0 -
a2 A 0 0.000000 0 0 0 0 0 0 -
a3 A 0 0.000000 0 0 0 0 0 0 -
b1 B 0 0.000000 0 0 0 0 0 0 -
b2 B 0 0.000000 0 0 0 0 0 0 -
b3 B 0 0.000000 0 0 0 0 0 0 -
a1.error A 0 0.000000 0 0 0 0 0 0 -
a2.error A 0 0.000000 0 0 0 0 0 0 -
a3.error A 0 0.000000 0 0 0 0 0 0 -
b1.error B 0 0.000000 0 0 0 0 0 0 -
b2.error B 0 0.000000 0 0 0 0 0 0 -
b3.error B 0 0.000000 0 0 0 0 0 0 -
$ casual service --list-services
name category mode timeout contract I C AT min max P PAT RI RC last
------------------- -------- ---- -------- -------- - - -------- -------- -------- - -------- -- -- ----
casual/example/echo example join 0.000000 linger 2 0 0.000000 0.000000 0.000000 0 0.000000 0 0 -
try out some of the CLI¶
call echo and enqueue the reply to a1¶
$ echo "casual" | casual buffer --compose | casual call --service casual/example/echo | casual queue --enqueue a1
43b76f1d6bfc4167aa5a52ad3bd9fb13
Check the state:
$ casual service --list-services
name category mode timeout contract I C AT min max P PAT RI RC last
------------------- -------- ---- -------- -------- - - -------- -------- -------- - -------- -- -- --------------------------------
casual/example/echo example join 0.000000 linger 2 1 0.000066 0.000066 0.000066 0 0.000000 0 0 2021-10-24T18:03:33.902228+02:00
$ casual queue --list-queues
name group rc rd count size avg EQ DQ UC last
-------- ----- -- -------- ----- ---- --- -- -- -- --------------------------------
a1 A 0 0.000000 1 7 7 1 0 0 2021-10-24T18:03:33.902595+02:00
...
$ casual queue --list-messages a1
id S size trid rd type reply available timestamp
-------------------------------- - ---- ---- -- -------- ----- --------- --------------------------------
43b76f1d6bfc4167aa5a52ad3bd9fb13 C 7 0 X_OCTET/ - 2021-10-24T18:18:32.184452+02:00
Peek and inspect the message
$ casual queue --peek a1 43b76f1d6bfc4167aa5a52ad3bd9fb13 | casual buffer --extract
casual
dequeue from a1 -> call echo -> enqueue b1¶
$ casual queue --dequeue a1 | casual call --service casual/example/echo | casual queue --enqueue b1
f7209b4a11dc4643a8614b74ea5e0508
Check the state
$ $ casual queue --list-queues
name group rc rd count size avg EQ DQ UC last
-------- ----- -- -------- ----- ---- --- -- -- -- --------------------------------
a1 A 0 0.000000 0 0 0 1 1 0 2021-10-24T18:03:33.902595+02:00
a2 A 0 0.000000 0 0 0 0 0 0 -
a3 A 0 0.000000 0 0 0 0 0 0 -
b1 B 0 0.000000 1 7 7 1 0 0 2021-10-24T18:11:02.967124+02:00
b2 B 0 0.000000 0 0 0 0 0 0 -
b3 B 0 0.000000 0 0 0 0 0 0 -
a1.error A 0 0.000000 0 0 0 0 0 0 -
a2.error A 0 0.000000 0 0 0 0 0 0 -
a3.error A 0 0.000000 0 0 0 0 0 0 -
b1.error B 0 0.000000 0 0 0 0 0 0 -
b2.error B 0 0.000000 0 0 0 0 0 0 -
b3.error B 0 0.000000 0 0 0 0 0 0 -
dequeue from b1 and extract the payload from the buffer¶
$ casual queue --dequeue b1 | casual buffer --extract
casual