|
1 |
| -//! Implements AMQP 1.0 binding for CloudEvents |
| 1 | +//! This module integrated the [cloudevents-sdk](https://docs.rs/cloudevents-sdk) with |
| 2 | +//! [fe2o3-amqp](https://docs.rs/fe2o3-amqp/) to easily send and receiver CloudEvents |
| 3 | +//! |
| 4 | +//! To send CloudEvents |
| 5 | +//! |
| 6 | +//! ```rust |
| 7 | +//! use fe2o3_amqp::{Connection, Sender, Session}; |
| 8 | +//! use cloudevents::{EventBuilderV10, binding::fe2o3_amqp::{EventMessage, AmqpMessage}}; |
| 9 | +//! |
| 10 | +//! // You need a running AMQP 1.0 broker to try out this example. |
| 11 | +//! // With docker: docker run -it --rm -e ARTEMIS_USERNAME=guest -e ARTEMIS_PASSWORD=guest -p 5672:5672 vromero/activemq-artemis |
| 12 | +//! |
| 13 | +//! #[tokio::main] |
| 14 | +//! async fn main() { |
| 15 | +//! let mut connection = |
| 16 | +//! Connection::open("cloudevents-sdk-rust", "amqp://guest:guest@localhost:5672") |
| 17 | +//! .await |
| 18 | +//! .unwrap(); |
| 19 | +//! let mut session = Session::begin(&mut connection).await.unwrap(); |
| 20 | +//! let mut sender = Sender::attach(&mut session, "sender", "q1").await.unwrap(); |
| 21 | +//! |
| 22 | +//! let event = EventBuilderV10::new() |
| 23 | +//! .id(i.to_string()) |
| 24 | +//! .ty("example.test") |
| 25 | +//! .source("localhost") |
| 26 | +//! .extension("ext-name", "AMQP") |
| 27 | +//! .data("application/json", value) |
| 28 | +//! .build() |
| 29 | +//! .unwrap(); |
| 30 | +//! |
| 31 | +//! let event_message = EventMessage::from_binary_event(event).unwrap(); |
| 32 | +//! let message = AmqpMessage::from(event_message); |
| 33 | +//! sender.send(message).await.unwrap() |
| 34 | +//! .accepted_or("not accepted").unwrap(); |
| 35 | +//! |
| 36 | +//! sender.close().await.unwrap(); |
| 37 | +//! session.end().await.unwrap(); |
| 38 | +//! connection.close().await.unwrap(); |
| 39 | +//! } |
| 40 | +//! ``` |
| 41 | +//! |
| 42 | +//! To receiver CloudEvents |
| 43 | +//! |
| 44 | +//! ```rust |
| 45 | +//! use fe2o3_amqp::{Connection, Receiver, Session}; |
| 46 | +//! use cloudevents::{EventBuilderV10, binding::fe2o3_amqp::{EventMessage, AmqpMessage}}; |
| 47 | +//! |
| 48 | +//! // You need a running AMQP 1.0 broker to try out this example. |
| 49 | +//! // With docker: docker run -it --rm -e ARTEMIS_USERNAME=guest -e ARTEMIS_PASSWORD=guest -p 5672:5672 vromero/activemq-artemis |
| 50 | +//! |
| 51 | +//! #[tokio::main] |
| 52 | +//! async fn main() { |
| 53 | +//! let mut connection = |
| 54 | +//! Connection::open("cloudevents-sdk-rust", "amqp://guest:guest@localhost:5672") |
| 55 | +//! .await |
| 56 | +//! .unwrap(); |
| 57 | +//! let mut session = Session::begin(&mut connection).await.unwrap(); |
| 58 | +//! let mut receiver = Receiver::attach(&mut session, "receiver", "q1").await.unwrap(); |
| 59 | +//! |
| 60 | +//! let delivery = receiver.recv().await.unwrap(); |
| 61 | +//! receiver.accept(&delivery).await.unwrap(); |
| 62 | +//! |
| 63 | +//! let event_message = EventMessage::from(delivery.into_message()); |
| 64 | +//! let event = MessageDeserializer::into_event(event_message).unwrap(); |
| 65 | +//! |
| 66 | +//! sender.close().await.unwrap(); |
| 67 | +//! session.end().await.unwrap(); |
| 68 | +//! connection.close().await.unwrap(); |
| 69 | +//! } |
| 70 | +//! ``` |
2 | 71 |
|
3 | 72 | use std::convert::TryFrom;
|
4 | 73 |
|
|
0 commit comments