2.0 KiB
Custom Plugins
With the aMQTT Broker plugins framework, one can add additional functionality to the broker without
having to subclass or rewrite any of the core broker logic. To define a custom list of plugins to be loaded,
add this section to your pyproject.toml
"
[project.entry-points."mypackage.mymodule.plugins"]
plugin_alias = "module.submodule.file:ClassName"
and specify the namespace when instantiating the broker:
from amqtt.broker import Broker
broker = Broker(plugin_namespace='mypackage.mymodule.plugins')
Each plugin has access to the full configuration file through the provided BaseContext
and can define
its own variables to configure its behavior.
::: amqtt.plugins.manager.BasePlugin
Plugins that are defined in theproject.entry-points
are loaded and notified of events by when the subclass
implements one or more of these methods:
on_mqtt_packet_sent
on_mqtt_packet_received
on_broker_pre_start
on_broker_post_start
on_broker_pre_shutdown
on_broker_post_shutdown
on_broker_client_connected
on_broker_client_disconnected
on_broker_client_subscribed
on_broker_client_unsubscribed
on_broker_message_received
Authentication Plugins
Of the plugins listed in project.entry-points
, one or more can be used to validate client sessions
by specifying their alias in auth
> plugins
section of the config:
auth:
plugins:
- plugin_alias_name
These plugins should subclass from BaseAuthPlugin
and implement the authenticate
method.
::: amqtt.plugins.authentication.BaseAuthPlugin
Topic Filter Plugins
Of the plugins listed in project.entry-points
, one or more can be used to determine topic access
by specifying their alias in topic-check
> plugins
section of the config:
topic-check:
enable: True
plugins:
- plugin_alias_name
These plugins should subclass from BaseTopicPlugin
and implement the topic_filtering
method.
::: amqtt.plugins.topic_checking.BaseTopicPlugin