开发插件
Apache ActiveMQ Classic 基于 POJO 和依赖注入模型。如果你正在开发 拦截器 或者 ActiveMQ Classic 的其他组件或插件,那么你应该做的第一件事就是像编写任何其他 Spring 组件一样开发代码,使用依赖注入。
依赖注入
有些人喜欢使用基于构造函数的注入,因为它消除了对单独的启动()方法的需求 - 其他人发现使用基于属性的注入更灵活,更容易映射到 XML 配置文件。我们将把这个选择留给你。对于要创建的复杂对象,你可以考虑编写一个 FactoryBean。有关使用 Spring 编写 POJO 的更多详细信息,请参阅他们的 文档。
自定义 XML
在 ActiveMQ Classic 中,你可以使用常规的 Spring.xml 语法来配置事物。但是,为了生成更简洁的 XML,使其更易于阅读和编辑,我们使用 XBean 来自动生成对 自定义 XML 的支持。
如果你希望你的 POJO 拥有自己的自定义 XML,你可能希望遵循以下源代码示例,以确保它与 XBean 配合良好。基本上,你可以在 javadoc 注释中添加一个 XBean 注释,以告诉 XBean 如何将 POJO 映射到自定义 XML。这应该看起来像这样
/**
* @org.apache.xbean.XBean element="foo"
*/
public class MyExtension {
...
}
你可以省略元素配置。有关可用注释选项的更多详细信息,请参见 此处
如果你将插件提交到 ActiveMQ Classic 项目,那么它最终将被包含在 maven 构建步骤中,以创建 XBean 工件作为 jar 的一部分(在 META-INF/services 区域)。
但是,如果你正在为 ActiveMQ Classic 编写外部插件,则需要将 maven-xbean-plugin 添加到你的 Maven 2 构建中。请参考 activemq-spring/pom.xml 作为使用此插件的示例。
无需自定义 XML 配置插件
如果你想配置不实现自定义 XML 的插件,你可以将插件定义为“常规”Spring bean,并在 broker 的 plugins
属性中引用它们。例如,
<broker useJmx="true" xmlns="https://activemq.apache.org/schema/core" plugins="#loggingPlugin">
...
</broker>
<bean id="loggingPlugin"
class="org.apache.activemq.broker.util.LoggingBrokerPlugin"
/>
请注意,如果在 <plugins/>
标签内配置了一些 XBean 插件,则此机制将不起作用。在这种情况下,你也必须在该标签内定义插件(使用相应的模式定义)。例如,
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="system" password="manager"
groups="users,admins"/>
<authenticationUser username="user" password="password"
groups="users"/>
<authenticationUser username="guest" password="password" groups="guests"/>
</users>
</simpleAuthenticationPlugin>
<bean xmlns="http://www.springframework.org/schema/beans"
id="loggingPlugin"
class="org.apache.activemq.broker.util.LoggingBrokerPlugin"
/>
</plugins>
示例
了解如何扩展 ActiveMQ Classic 的最简单方法可能是查看一些功能的具体示例以及这些功能是如何实现和配置的。以下是一些示例
- XBeanBrokerService 处理 XML 中大多数核心配置的
标签 - 安全 有一个使用 示例 XML 配置文件,使用 AuthorizationPlugin
- 该 丢弃 DLQ 插件 用于从 DLQ 中丢弃消息。