spectacles_brokers/lib.rs
1//! # spectacles-brokers
2//!
3//! Message brokers which allow for simple communication between Spectacles services.
4//!
5//! ## Available Brokers
6//! - AMQP - An interface to connect to an AMQP-compliant server.
7
8//! ## Example AMQP Publisher
9//! ```rust,norun
10//! use std::env::var;
11//! use std::net::SocketAddr;
12//! use futures::future::Future;
13//! use spectacles_brokers::AmqpBroker;
14//!
15//! fn main() {
16//! let addr = var("AMQP_ADDR").expect("No AMQP server address found.");
17//! let addr: SocketAddr = addr.parse();
18//!
19//! let connect = AmqpBroker::new(&addr, "test".to_string(), None);
20//! let result = connect.and_then(|broker| {
21//! let json = r#"{"message": "Example Publish."}"#.as_bytes();
22//! broker.publish("HELLO", json.to_vec())
23//! });
24//! let success = result.map(|_| {
25//! println!("Message publish succeeded, check the other window!");
26//! }).map_err(|err| {
27//! eprintln!("An error was encountered during publish: {}", err);
28//! });
29//!
30//! tokio::run(success);
31//! }
32//! ```
33//!
34//! More examples can be found in the examples directory on Github.
35#[macro_use] extern crate log;
36
37pub use errors::Error;
38
39mod errors;
40/// Utilities for interfacing with an AMQP-based message broker.
41pub mod amqp;
42
43/// Event handler for receiving messages from a message brokers.
44pub trait MessageHandler {
45 fn on_message(&self, event: &str, payload: String);
46}