% 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'"