跳至主要内容
版本: 4.0

事件交换插件

概述

客户端连接、通道、队列、消费者以及系统的其他部分自然地生成事件。例如,当连接被接受、经过身份验证并授权访问目标虚拟主机时,它将发出类型为 connection_created 的事件。当连接关闭或因任何原因失败时,将发出 connection_closed 事件。

监控 和审计服务可能对观察这些事件感兴趣。RabbitMQ 具有一个最小化的事件通知机制,可以通过插件将其公开给 RabbitMQ 客户端。

使用 rabbitmq-event-exchange 插件使用内部事件

rabbitmq-event-exchange 是一个插件,它使用内部事件并将其重新发布到主题交换,从而将事件公开给客户端(应用程序)。

要使用事件,应用程序需要声明一个队列,将其绑定到一个特殊的系统交换,并使用消息。

它在默认虚拟主机中声明了一个名为 amq.rabbitmq.event 的主题交换。所有事件都以 exchange.createdbinding.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 客户端的用法示例。

© 2024 RabbitMQ. All rights reserved.