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}