|
4 | 4 | //! To send CloudEvents
|
5 | 5 | //!
|
6 | 6 | //! ```rust
|
| 7 | +//! use serde_json::json; |
7 | 8 | //! use fe2o3_amqp::{Connection, Sender, Session};
|
8 |
| -//! use cloudevents::{EventBuilderV10, binding::fe2o3_amqp::{EventMessage, AmqpMessage}}; |
| 9 | +//! use cloudevents::{ |
| 10 | +//! EventBuilder, EventBuilderV10, |
| 11 | +//! binding::fe2o3_amqp::{EventMessage, AmqpMessage} |
| 12 | +//! }; |
9 | 13 | //!
|
10 | 14 | //! // You need a running AMQP 1.0 broker to try out this example.
|
11 | 15 | //! // With docker: docker run -it --rm -e ARTEMIS_USERNAME=guest -e ARTEMIS_PASSWORD=guest -p 5672:5672 vromero/activemq-artemis
|
12 | 16 | //!
|
13 |
| -//! #[tokio::main] |
14 |
| -//! async fn main() { |
| 17 | +//! # async fn send_event() { |
15 | 18 | //! let mut connection =
|
16 | 19 | //! Connection::open("cloudevents-sdk-rust", "amqp://guest:guest@localhost:5672")
|
17 | 20 | //! .await
|
|
20 | 23 | //! let mut sender = Sender::attach(&mut session, "sender", "q1").await.unwrap();
|
21 | 24 | //!
|
22 | 25 | //! let event = EventBuilderV10::new()
|
23 |
| -//! .id(i.to_string()) |
| 26 | +//! .id("1") |
24 | 27 | //! .ty("example.test")
|
25 | 28 | //! .source("localhost")
|
26 | 29 | //! .extension("ext-name", "AMQP")
|
27 |
| -//! .data("application/json", value) |
| 30 | +//! .data("application/json", json!({"hello": "world"})) |
28 | 31 | //! .build()
|
29 | 32 | //! .unwrap();
|
30 | 33 | //!
|
|
36 | 39 | //! sender.close().await.unwrap();
|
37 | 40 | //! session.end().await.unwrap();
|
38 | 41 | //! connection.close().await.unwrap();
|
39 |
| -//! } |
| 42 | +//! # } |
40 | 43 | //! ```
|
41 | 44 | //!
|
42 | 45 | //! To receiver CloudEvents
|
43 | 46 | //!
|
44 | 47 | //! ```rust
|
45 | 48 | //! use fe2o3_amqp::{Connection, Receiver, Session};
|
46 |
| -//! use cloudevents::{EventBuilderV10, binding::fe2o3_amqp::{EventMessage, AmqpMessage}}; |
| 49 | +//! use cloudevents::{ |
| 50 | +//! EventBuilderV10, message::MessageDeserializer, |
| 51 | +//! binding::fe2o3_amqp::{EventMessage, AmqpMessage} |
| 52 | +//! }; |
47 | 53 | //!
|
48 | 54 | //! // You need a running AMQP 1.0 broker to try out this example.
|
49 | 55 | //! // With docker: docker run -it --rm -e ARTEMIS_USERNAME=guest -e ARTEMIS_PASSWORD=guest -p 5672:5672 vromero/activemq-artemis
|
50 | 56 | //!
|
51 |
| -//! #[tokio::main] |
52 |
| -//! async fn main() { |
| 57 | +//! # async fn receive_event() { |
53 | 58 | //! let mut connection =
|
54 | 59 | //! Connection::open("cloudevents-sdk-rust", "amqp://guest:guest@localhost:5672")
|
55 | 60 | //! .await
|
|
60 | 65 | //! let delivery = receiver.recv().await.unwrap();
|
61 | 66 | //! receiver.accept(&delivery).await.unwrap();
|
62 | 67 | //!
|
63 |
| -//! let event_message = EventMessage::from(delivery.into_message()); |
| 68 | +//! let message: AmqpMessage = delivery.into_message(); |
| 69 | +//! let event_message = EventMessage::from(message); |
64 | 70 | //! let event = MessageDeserializer::into_event(event_message).unwrap();
|
65 | 71 | //!
|
66 |
| -//! sender.close().await.unwrap(); |
| 72 | +//! receiver.close().await.unwrap(); |
67 | 73 | //! session.end().await.unwrap();
|
68 | 74 | //! connection.close().await.unwrap();
|
69 |
| -//! } |
| 75 | +//! # } |
70 | 76 | //! ```
|
71 | 77 |
|
72 | 78 | use std::convert::TryFrom;
|
@@ -112,22 +118,57 @@ pub type AmqpBody = Body<Value>;
|
112 | 118 | /// ## [`Event`] -> [`AmqpMessage`] in binary content mode
|
113 | 119 | ///
|
114 | 120 | /// ```rust
|
| 121 | +/// use serde_json::json; |
| 122 | +/// use fe2o3_amqp_types::messaging::Message; |
| 123 | +/// use cloudevents::{EventBuilder, EventBuilderV10, binding::fe2o3_amqp::EventMessage}; |
| 124 | +/// |
| 125 | +/// let event = EventBuilderV10::new() |
| 126 | +/// .id("1") |
| 127 | +/// .ty("example.test") |
| 128 | +/// .source("localhost") |
| 129 | +/// .extension("ext-name", "AMQP") |
| 130 | +/// .data("application/json", json!({"hello": "world"})) |
| 131 | +/// .build() |
| 132 | +/// .unwrap(); |
115 | 133 | /// let event_message = EventMessage::from_binary_event(event).unwrap();
|
116 |
| -/// let amqp_message = AmqpMessage:from(event_message); |
| 134 | +/// let amqp_message = Message::from(event_message); |
117 | 135 | /// ```
|
118 | 136 | ///
|
119 | 137 | /// ## [`Event`] -> [`AmqpMessage`] in structured content mode
|
120 | 138 | ///
|
121 | 139 | /// ```rust
|
| 140 | +/// use serde_json::json; |
| 141 | +/// use fe2o3_amqp_types::messaging::Message; |
| 142 | +/// use cloudevents::{EventBuilder, EventBuilderV10, binding::fe2o3_amqp::EventMessage}; |
| 143 | +/// |
| 144 | +/// let event = EventBuilderV10::new() |
| 145 | +/// .id("1") |
| 146 | +/// .ty("example.test") |
| 147 | +/// .source("localhost") |
| 148 | +/// .extension("ext-name", "AMQP") |
| 149 | +/// .data("application/json", json!({"hello": "world"})) |
| 150 | +/// .build() |
| 151 | +/// .unwrap(); |
122 | 152 | /// let event_message = EventMessage::from_structured_event(event).unwrap();
|
123 |
| -/// let amqp_message = AmqpMessage:from(event_message); |
| 153 | +/// let amqp_message = Message::from(event_message); |
124 | 154 | /// ```
|
125 | 155 | ///
|
126 | 156 | /// ## [`AmqpMessage`] -> [`Event`]
|
127 | 157 | ///
|
128 | 158 | /// ```rust
|
129 |
| -/// let event_message = EventMessage::from(amqp_message); |
130 |
| -/// let event = MessageDeserializer::into_event(event_message).unwrap(); |
| 159 | +/// use fe2o3_amqp::Receiver; |
| 160 | +/// use cloudevents::{ |
| 161 | +/// message::MessageDeserializer, |
| 162 | +/// binding::fe2o3_amqp::{AmqpMessage, EventMessage} |
| 163 | +/// }; |
| 164 | +/// |
| 165 | +/// # async fn receive_event(receiver: &mut Receiver) { |
| 166 | +/// let delivery = receiver.recv().await.unwrap(); |
| 167 | +/// receiver.accept(&delivery).await.unwrap(); |
| 168 | +/// let amqp_message: AmqpMessage = delivery.into_message(); |
| 169 | +/// let event_message = EventMessage::from(amqp_message); |
| 170 | +/// let event = MessageDeserializer::into_event(event_message).unwrap(); |
| 171 | +/// # } |
131 | 172 | /// ```
|
132 | 173 | pub struct EventMessage {
|
133 | 174 | pub content_type: Option<Symbol>,
|
|
0 commit comments