diff options
Diffstat (limited to 'Run/Que/tutorial.md')
-rw-r--r-- | Run/Que/tutorial.md | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Run/Que/tutorial.md b/Run/Que/tutorial.md new file mode 100644 index 0000000..b5b258d --- /dev/null +++ b/Run/Que/tutorial.md @@ -0,0 +1,55 @@ +% que.run Tutorial + +## Ques + +A que is a multi-consumer, multi-producer channel available anywhere you +have a network connection. If you are familiar with Go channels, they +are pretty much the same thing. Put some values in one end, and take +them out the other end at a different time, or in a different process. + +Ques are created dynamically for every HTTP request you make. Here we +use the `que` client to create a new que at the path `example/new-que`: + + que example/new-que + +The `que` client is useful, but you can use anything to make the HTTP +request, for example here's the same thing with curl: + + curl https://que.run/example/new-que + +These requests will block until a value is placed on the other +end. Let's do that now. In a separate terminal: + + echo "hello world" | que example/new-que - + +This tells the `que` client to read the value from `stdin` and then send +it to `example/new-que`. Or with curl: + + curl https://que.run/example/new-que -d "hello world" + +This will succeed immediately and send the string "`hello world`" over +the channel, which will be received and printed by the listener in the +other terminal. + +You can have as many producers and consumers attached to a channel as +you want. + +## Namespaces + +Ques are organized into namespaces, identified by the first fragment of +the path. In the above commands we used `example` as the namespace, but +you can use whatever you want. + +Except, there is one special namespace `_` which is reserved for +internal use only. You can't write to the `_` namespace. + +Namespaces are normally public, and anyone can write and read to +them. The `Pro` version allows you to reserve namespaces and add +authentication. + +## Events + +Just reading and writing data isn't very exciting, so let's throw in +some events. We can very quickly put together a job processor. + + que example/new-que --then "./worker.sh '\msg'" |