第 11 章 截获消息
使用 AMQ Broker,您可以截获进入或退出代理的数据包,允许您审核数据包或过滤信息。拦截器可以更改它们拦截器的数据包,这使得它们强大,但也可能会有危险。
您可以开发拦截器来满足您的业务需求。拦截器是特定于协议的,必须实现适当的接口。
拦截器必须实施 intercept ()
方法,该方法返回布尔值。如果值为 true
,则消息数据包将继续。如果为 false
,则进程将中止,则不会调用其他拦截器,且不会进一步处理消息数据包。
11.1. 创建拦截器 复制链接链接已复制到粘贴板!
您可以创建自己的传入和传出的拦截器。所有拦截器都特定于协议,并为进入或分别退出服务器的任何数据包调用。这可让您创建拦截器来满足审计数据包等业务要求。拦截器可能会更改它们拦截器的数据包。这使得它们的功能强大以及潜在的危险性,因此请务必谨慎使用它们。
拦截器及其依赖项必须放在代理的 Java 类路径中。您可以使用 < ;broker_instance_dir> /lib
目录,因为它是 classpath 的一部分。
流程
以下示例演示了如何创建一个拦截器来检查传递给它的每个数据包的大小。请注意,这些示例为每个协议实施一个特定的接口。
实施适当的接口并覆盖其
intercept ()
方法。如果您使用 AMQP 协议,请实施
org.apache.activemq.artemis.protocol.amqp.broker.AmqpInterceptor
接口。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用核心协议,您的拦截器必须实现
org.apache.artemis.activemq.api.core.Interceptor
接口。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 MQTT 协议,请实施
org.apache.activemq.artemis.core.protocol.mqtt.MQTTInterceptor
接口。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用 STOMP 协议,请实施
org.apache.activemq.artemis.core.protocol.stomp.StompFrameInterceptor
接口。Copy to Clipboard Copied! Toggle word wrap Toggle overflow