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.base.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_senton_mqtt_packet_receivedon_broker_pre_starton_broker_post_starton_broker_pre_shutdownon_broker_post_shutdownon_broker_client_connectedon_broker_client_disconnectedon_broker_client_subscribedon_broker_client_unsubscribedon_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