18.5. AMQ Broker 插件支持
AMQ 支持自定义插件。您可以使用插件记录关于许多不同类型的事件的信息,否则这些事件只能通过调试日志可用。可以一起注册、绑定和执行多个插件。插件是根据注册顺序执行的,即,首先注册的第一个插件。
您可以创建自定义插件并使用 ActiveMQServerPlugin 接口来实施它们。此接口可确保插件位于 classpath 上,并注册到代理。由于所有接口方法都是默认实施的,您必须仅添加需要实施的必要行为。
18.5.1. 在类路径中添加插件 复制链接链接已复制到粘贴板!
通过将相关的 .jar 文件添加到 < broker_instance_dir> /lib 目录中,将自定义创建的代理插件添加到代理运行时。
如果您使用嵌入式系统,请将 .jar 文件放在嵌入式应用程序的常规类路径下。
18.5.2. 注册插件 复制链接链接已复制到粘贴板!
您必须在 broker.xml 配置文件中添加 broker-plugins 元素来注册插件。您可以使用 property 子元素指定插件配置值。这些属性会在插件实例化后读取并传递给插件的 init (Map<String, String>)操作。
<broker-plugins>
<broker-plugin class-name="some.plugin.UserPlugin">
<property key="property1" value="val_1" />
<property key="property2" value="val_2" />
</broker-plugin>
</broker-plugins>
18.5.3. 以编程方式注册插件 复制链接链接已复制到粘贴板!
要以编程方式注册插件,请使用 registerBrokerPlugin () 方法并传递插件的新实例。以下示例显示了 UserPlugin 插件的注册:
Configuration config = new ConfigurationImpl();
config.registerBrokerPlugin(new UserPlugin());
18.5.4. 记录特定事件 复制链接链接已复制到粘贴板!
默认情况下,AMQ 代理提供 LoggingActiveMQServerPlugin 插件来记录特定的代理事件。LoggingActiveMQServerplugin 插件默认是注释的,不会记录任何信息。
下表描述了每个插件属性。将配置属性值设置为 true 以记录事件。
| 属性 | 描述 |
|
| 创建或销毁连接时记录信息。 |
|
| 创建或关闭会话时记录信息。 |
|
| 创建或关闭消费者时记录信息。 |
|
| 当消息传送给消费者以及消息被消费者确认时,记录信息。 |
|
| 当消息发送到地址以及消息在代理中路由时,会记录信息。 |
|
| 当队列创建或销毁时,当消息过期、部署网桥时以及关键故障发生时,会记录信息。 |
|
| 所有上述所有事件的日志信息。 |
要配置 LoggingActiveMQServerPlugin 插件来记录连接事件,在 broker.xml 配置文件中取消注释 <broker-plugins> 部分。在注释的默认示例中,所有事件的值都设为 true。
<configuration ...>
...
<!-- Uncomment the following if you want to use the Standard LoggingActiveMQServerPlugin plugin to log in events -->
<broker-plugins>
<broker-plugin class-name="org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin">
<property key="LOG_ALL_EVENTS" value="true"/>
<property key="LOG_CONNECTION_EVENTS" value="true"/>
<property key="LOG_SESSION_EVENTS" value="true"/>
<property key="LOG_CONSUMER_EVENTS" value="true"/>
<property key="LOG_DELIVERING_EVENTS" value="true"/>
<property key="LOG_SENDING_EVENTS" value="true"/>
<property key="LOG_INTERNAL_EVENTS" value="true"/>
</broker-plugin>
</broker-plugins>
...
</configuration>
当您更改 < broker-plugins> 部分中的配置参数时,您必须重启代理以重新载入配置更新。这些配置更改不会基于 configuration-file-refresh-period 设置重新载入。
当日志级别设置为 INFO 时,事件发生后会记录一个条目。如果日志级别设为 DEBUG,则会在事件之前和之后生成日志条目,例如 beforeCreateConsumer () 和 afterCreateConsumer ()。如果日志级别设为 DEBUG,则日志记录器会在可用时记录更多通知信息。