18.7. AMQ Broker 插件支持
AMQ 支持自定义插件。您可以使用插件记录有关很多不同类型的事件的信息,否则只能通过调试日志获得。可以一起注册、绑定和执行多个插件。这些插件将根据注册的顺序执行,即,第一个注册插件始终首先执行。
您可以创建自定义插件并使用 ActiveMQServerPlugin
接口实施它们。此接口确保插件位于类路径上,并在代理中注册。因为所有接口方法都是默认实施的,您只需要添加需要实施所需的行为。
18.7.1. 在类路径中添加插件
通过将相关的 .jar
文件添加到 < broker_instance_dir> /lib
目录中,将自定义创建的代理插件添加到代理运行时。
如果您使用嵌入式系统,请将 .jar
文件放在内嵌应用程序的常规类路径下。
18.7.2. 注册插件
您必须通过在 broker.xml
配置文件中添加 broker-plugins
元素来注册插件。您可以使用 属性
子元素指定插件配置值。这些属性将在插件实例化后读取并传递到插件的 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.7.3. 以编程方式注册插件
要以编程方式注册插件,请使用 registerBrokerPlugin()
方法,并传递您的插件新实例。以下示例显示了注册 UserPlugin
插件:
Configuration config = new ConfigurationImpl();
config.registerBrokerPlugin(new UserPlugin());
18.7.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
,则日志记录器会在有可用时记录有关通知的更多信息。