事件交换插件
概述
客户端连接、通道、队列、消费者以及系统的其他部分自然地生成事件。例如,当连接被接受、经过身份验证并授权访问目标虚拟主机时,它将发出类型为 connection_created
的事件。当连接关闭或因任何原因失败时,将发出 connection_closed
事件。
监控 和审计服务可能对观察这些事件感兴趣。RabbitMQ 具有一个最小化的事件通知机制,可以通过插件将其公开给 RabbitMQ 客户端。
使用 rabbitmq-event-exchange 插件使用内部事件
rabbitmq-event-exchange 是一个插件,它使用内部事件并将其重新发布到主题交换,从而将事件公开给客户端(应用程序)。
要使用事件,应用程序需要声明一个队列,将其绑定到一个特殊的系统交换,并使用消息。
它在默认虚拟主机中声明了一个名为 amq.rabbitmq.event
的主题交换。所有事件都以 exchange.created
、binding.deleted
等路由键发布到此交换,因此您可以只订阅您感兴趣的事件。
该交换的行为类似于 amq.rabbitmq.log
:所有内容都发布到那里;如果您不信任具有发布信息的用户的权限,请不要允许他们访问。
该插件不需要配置,只需激活它即可。
rabbitmq-plugins enable rabbitmq_event_exchange
每个事件都与之关联着各种属性。这些属性被转换为 AMQP 0-9-1 数据编码,并插入消息头。消息主体始终为空。
事件
RabbitMQ 和相关插件使用以下路由键生成事件
RabbitMQ 代理
队列、交换和绑定事件
queue.created
queue.deleted
exchange.created
exchange.deleted
binding.created
binding.deleted
连接和通道事件
connection.created
connection.closed
channel.created
channel.closed
消费者事件
consumer.created
consumer.deleted
策略和参数事件
policy.set
policy.cleared
parameter.set
parameter.cleared
虚拟主机事件
vhost.created
vhost.deleted
用户相关事件
user.authentication.success
user.authentication.failure
user.created
user.deleted
user.password.changed
user.password.cleared
user.tags.set
权限事件
permission.created
permission.deleted
铲子插件
工作者事件
shovel.worker.status
shovel.worker.removed
联合插件
链接事件
federation.link.status
federation.link.removed
示例
在 rabbitmq-event-exchange 存储库 中有一个使用 Java 客户端的用法示例。