rmqtt_plugins/
lib.rs

1//! rmqtt-plugins
2//!
3//! A collection of plugins for the rmqtt MQTT broker, providing functionality
4//! for various features such as authentication, message retention, HTTP APIs,
5//! and more. Each plugin can be conditionally included based on feature flags,
6//! allowing for modularity and customization. The plugins are categorized into
7//! core, bridge, storage, utility, and cluster plugins, making it easy to extend
8//! the rmqtt functionality with different backend systems or protocols.
9//
10//! The following categories of plugins are available:
11//! - **Core Plugins**: Fundamental plugins for core functionality such as ACL,
12//!   retention, and HTTP API support.
13//! - **Bridge Plugins**: Plugins to integrate with external message brokers like
14//!   Kafka, Pulsar, NATS, and more.
15//! - **Storage Plugins**: Plugins for message and session storage with support
16//!   for different backends like Redis and SLED.
17//! - **Utility Plugins**: Additional utility features such as system topics,
18//!   topic rewrites, and web hooks.
19//! - **Cluster Plugins**: Support for clustering features such as Raft and
20//!   broadcast modes for distributed setups.
21
22#![deny(missing_docs)]
23
24// ---- Core Plugins ----
25#[cfg(feature = "acl")]
26pub use rmqtt_acl as acl;
27
28#[cfg(any(
29    feature = "retainer",
30    feature = "retainer-ram",
31    feature = "retainer-sled",
32    feature = "retainer-redis"
33))]
34pub use rmqtt_retainer as retainer;
35
36#[cfg(feature = "http-api")]
37pub use rmqtt_http_api as http_api;
38
39#[cfg(feature = "counter")]
40pub use rmqtt_counter as counter;
41
42#[cfg(feature = "auth-http")]
43pub use rmqtt_auth_http as auth_http;
44
45#[cfg(feature = "auth-jwt")]
46pub use rmqtt_auth_jwt as auth_jwt;
47
48#[cfg(feature = "auto-subscription")]
49pub use rmqtt_auto_subscription as auto_subscription;
50
51// ---- Bridge Plugins ----
52#[cfg(feature = "bridge-egress-kafka")]
53pub use rmqtt_bridge_egress_kafka as bridge_egress_kafka;
54
55#[cfg(feature = "bridge-ingress-kafka")]
56pub use rmqtt_bridge_ingress_kafka as bridge_ingress_kafka;
57
58#[cfg(feature = "bridge-egress-mqtt")]
59pub use rmqtt_bridge_egress_mqtt as bridge_egress_mqtt;
60
61#[cfg(feature = "bridge-ingress-mqtt")]
62pub use rmqtt_bridge_ingress_mqtt as bridge_ingress_mqtt;
63
64#[cfg(feature = "bridge-egress-pulsar")]
65pub use rmqtt_bridge_egress_pulsar as bridge_egress_pulsar;
66
67#[cfg(feature = "bridge-ingress-pulsar")]
68pub use rmqtt_bridge_ingress_pulsar as bridge_ingress_pulsar;
69
70#[cfg(feature = "bridge-egress-nats")]
71pub use rmqtt_bridge_egress_nats as bridge_egress_nats;
72
73#[cfg(feature = "bridge-egress-reductstore")]
74pub use rmqtt_bridge_egress_reductstore as bridge_egress_reductstore;
75
76// ---- Storage Plugins ----
77#[cfg(any(
78    feature = "message-storage",
79    feature = "message-storage-ram",
80    feature = "message-storage-redis",
81    feature = "message-storage-redis-cluster"
82))]
83pub use rmqtt_message_storage as message_storage;
84
85#[cfg(any(
86    feature = "session-storage",
87    feature = "session-storage-sled",
88    feature = "session-storage-redis",
89    feature = "session-storage-redis-cluster"
90))]
91pub use rmqtt_session_storage as session_storage;
92
93// ---- Utility Plugins ----
94#[cfg(feature = "sys-topic")]
95pub use rmqtt_sys_topic as sys_topic;
96
97#[cfg(feature = "topic-rewrite")]
98pub use rmqtt_topic_rewrite as topic_rewrite;
99
100#[cfg(feature = "web-hook")]
101pub use rmqtt_web_hook as web_hook;
102
103#[cfg(feature = "p2p-messaging")]
104pub use rmqtt_p2p_messaging as p2p_messaging;
105
106// ---- Cluster Plugins ----
107#[cfg(feature = "cluster-raft")]
108pub use rmqtt_cluster_raft as cluster_raft;
109
110#[cfg(feature = "cluster-broadcast")]
111pub use rmqtt_cluster_broadcast as cluster_broadcast;