客戶端connection、channels、queues、consumers和系統其它部分自動生成的事件。例如,當一個connection被接受,虛擬主機通過了驗證授權,將會發送一個connection_created事件,當一個connection關閉或者由於其它原因失敗,將會發送一個connection_closed事件。RabbitMQ提供了一個最小的事件通知機制向RabbitMQ客戶端公開。
rabbitmq-event-exchange插件
rabbitmq-event-exchange是一個消費內部事件並且重新發送到一個topic exchange的插件,因此可以展示事件給客戶端應用程序。
爲了消費事件,應用程序需要聲明一個隊列,並綁定到一個系統指定的交換器去消費消息。
插件在默認的虛擬主機上聲明瞭一個topic類型的exchange(交換器)amq.rabbitmq.event。所有的事件都會發送到這個exchange上並綁定一個路由鍵,比如,exchange.created、binding.deleted。所以你可以只訂閱你關注的事件。
交換器的行爲類似amq.rabbitmq.log,所有的信息都發布到這裏,如果用戶沒有經過授權,你可以拒絕它們訪問。
每個事件都有與之關聯的各種屬性,它們被轉換成AMQP 0-9-1數據編碼並插入到消息頭中。消息的正文始終爲空。
啓動插件
rabbitmq-plugins enable rabbitmq_event_exchange
關閉插件
rabbitmq-plugins disable rabbitmq_event_exchange
事件(Events)
RabbitMQ和相關插件通過routing keys發送事件:
RabbitMQ Broker
Queue, Exchange and Binding events:
- queue.deleted
- queue.created
- exchange.created
- exchange.deleted
- binding.created
- binding.deleted
Connection and Channel events:
- connection.created
- connection.closed
- channel.created
- channel.closed
Consumer events:
- consumer.created
- consumer.deleted
Policy and Parameter events:
- policy.set
- policy.cleared
- parameter.set
- parameter.cleared
Virtual host events:
- vhost.created
- vhost.deleted
User related events:
- user.authentication.success
- user.authentication.failure
- user.created
- user.deleted
- user.password.changed
- user.password.cleared
- user.tags.set
Permission events:
- permission.created
- permission.deleted
Shovel Plugin
Worker events:
- shovel.worker.status
- shovel.worker.removed
Federation Plugin
Link events:
- federation.link.status
- federation.link.removed
實戰消息示例
集羣中如何使用該插件
在集羣中每個節點都要開啓此插件,否則amq.rabbitmq.event交換器不可以正常的被創建。
參考:https://www.rabbitmq.com/event-exchange.html
GitHub地址:https://github.com/mingyang66/spring-parent/tree/master/spring-boot-control-rabbitmq-service