Expand description
Requeuest is a library for queueing the sending of HTTP requests. It’s built with the sqlxmq crate, which is a message queue that uses a postgres database for storing messages.
Getting started
Assuming you already have an sqlx
connection to a postgres database, you
will first need to run migrations so the needed tables and SQL functions can
get set up on your postgres database.
requeuest::migrate(&pool).await?;
Once that’s taken care of, start by constructing a client. This is what you
will use to spawn requests, an what will execute jobs in the background. It
will keep doing so until it is dropped. The client contains a tokio
JoinHandle
which you can remove from the client with
Client::take_listener
if you want the
listener to keep running after the client has dropped, or otherwise
interface with the background task directly.
use requeuest::{Client, client::Channels};
let client = Client::new(pool, Channels::List(&["my_service"])).await?;
After the client has been constructed, you can begin spawning jobs. Here we send a get request to an example address:
use requeuest::Request;
let request = Request::get("https://foo.bar/_api/baz")?.build();
client.spawn("my_service", &request).await?;
You can also also get the response back from a successfully delivered request.
let request = Request::post("https://example.com/_api/bar/foo", Vec::from("some data"))?.build();
let response = client.spawn_returning("my_service", &request).await?;
Note that the spawn_returning
method will wait indefinitely (or to be
precise, roughly 10^293 years) until a successful response is received, so
this will wait forever if a request is sent to e.g. an unregistered domain,
or sends data to an API which will always result in a non-200 response code.
Features
This crate has the following features:
http
: Enable conversion of requests from the [http
] crate- Async runtime and TLS implementation for
sqlx
:- Any of
runtime-{tokio,actix,async-std}-{rustls,native-tls}
- Any of
Re-exports
Modules
The Client
holds the job listener and database connection, which is used
to spawn jobs.
Errors specific to this crate.
Contains the definition of the request which gets (de)serialized and sent to the database
Structs
A set of HTTP headers
The Request Method (VERB)
An asynchronous pool of SQLx database connections.
PostgreSQL database driver.
A parsed URL record.
A Universally Unique Identifier (UUID).
Enums
Errors that can occur during parsing.
Functions
Runs the SQL migrations this library needs.