blob: 4b29d2a14f4c1ade9e3b50b3101b8e47a8c47ef9 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Broker Plugins ยท ActiveMQ Artemis Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="resource-limits.html" />
<link rel="prev" href="masking-passwords.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="notice.html">
<a href="notice.html">
Legal Notice
</a>
</li>
<li class="chapter " data-level="1.3" data-path="preface.html">
<a href="preface.html">
Preface
</a>
</li>
<li class="chapter " data-level="1.4" data-path="project-info.html">
<a href="project-info.html">
Project Info
</a>
</li>
<li class="chapter " data-level="1.5" data-path="versions.html">
<a href="versions.html">
Versions
</a>
</li>
<li class="chapter " data-level="1.6" data-path="messaging-concepts.html">
<a href="messaging-concepts.html">
Messaging Concepts
</a>
</li>
<li class="chapter " data-level="1.7" data-path="architecture.html">
<a href="architecture.html">
Architecture
</a>
</li>
<li class="chapter " data-level="1.8" data-path="using-server.html">
<a href="using-server.html">
Using the Server
</a>
</li>
<li class="chapter " data-level="1.9" data-path="upgrading.html">
<a href="upgrading.html">
Upgrading
</a>
</li>
<li class="chapter " data-level="1.10" data-path="address-model.html">
<a href="address-model.html">
Address Model
</a>
</li>
<li class="chapter " data-level="1.11" data-path="protocols-interoperability.html">
<a href="protocols-interoperability.html">
Protocols and Interoperability
</a>
</li>
<li class="chapter " data-level="1.12" data-path="amqp.html">
<a href="amqp.html">
AMQP
</a>
</li>
<li class="chapter " data-level="1.13" data-path="mqtt.html">
<a href="mqtt.html">
MQTT
</a>
</li>
<li class="chapter " data-level="1.14" data-path="stomp.html">
<a href="stomp.html">
STOMP
</a>
</li>
<li class="chapter " data-level="1.15" data-path="openwire.html">
<a href="openwire.html">
OpenWire
</a>
</li>
<li class="chapter " data-level="1.16" data-path="core.html">
<a href="core.html">
Core
</a>
</li>
<li class="chapter " data-level="1.17" data-path="jms-core-mapping.html">
<a href="jms-core-mapping.html">
Mapping JMS Concepts to the Core API
</a>
</li>
<li class="chapter " data-level="1.18" data-path="using-jms.html">
<a href="using-jms.html">
Using JMS
</a>
</li>
<li class="chapter " data-level="1.19" data-path="client-classpath.html">
<a href="client-classpath.html">
The Client Classpath
</a>
</li>
<li class="chapter " data-level="1.20" data-path="examples.html">
<a href="examples.html">
Examples
</a>
</li>
<li class="chapter " data-level="1.21" data-path="wildcard-routing.html">
<a href="wildcard-routing.html">
Routing Messages With Wild Cards
</a>
</li>
<li class="chapter " data-level="1.22" data-path="wildcard-syntax.html">
<a href="wildcard-syntax.html">
Wildcard Syntax
</a>
</li>
<li class="chapter " data-level="1.23" data-path="filter-expressions.html">
<a href="filter-expressions.html">
Filter Expressions
</a>
</li>
<li class="chapter " data-level="1.24" data-path="persistence.html">
<a href="persistence.html">
Persistence
</a>
</li>
<li class="chapter " data-level="1.25" data-path="configuring-transports.html">
<a href="configuring-transports.html">
Configuring Transports
</a>
</li>
<li class="chapter " data-level="1.26" data-path="config-reload.html">
<a href="config-reload.html">
Configuration Reload
</a>
</li>
<li class="chapter " data-level="1.27" data-path="connection-ttl.html">
<a href="connection-ttl.html">
Detecting Dead Connections
</a>
</li>
<li class="chapter " data-level="1.28" data-path="slow-consumers.html">
<a href="slow-consumers.html">
Detecting Slow Consumers
</a>
</li>
<li class="chapter " data-level="1.29" data-path="network-isolation.html">
<a href="network-isolation.html">
Avoiding Network Isolation
</a>
</li>
<li class="chapter " data-level="1.30" data-path="critical-analysis.html">
<a href="critical-analysis.html">
Detecting Broker Issues (Critical Analysis)
</a>
</li>
<li class="chapter " data-level="1.31" data-path="transaction-config.html">
<a href="transaction-config.html">
Resource Manager Configuration
</a>
</li>
<li class="chapter " data-level="1.32" data-path="flow-control.html">
<a href="flow-control.html">
Flow Control
</a>
</li>
<li class="chapter " data-level="1.33" data-path="send-guarantees.html">
<a href="send-guarantees.html">
Guarantees of sends and commits
</a>
</li>
<li class="chapter " data-level="1.34" data-path="undelivered-messages.html">
<a href="undelivered-messages.html">
Message Redelivery and Undelivered Messages
</a>
</li>
<li class="chapter " data-level="1.35" data-path="message-expiry.html">
<a href="message-expiry.html">
Message Expiry
</a>
</li>
<li class="chapter " data-level="1.36" data-path="large-messages.html">
<a href="large-messages.html">
Large Messages
</a>
</li>
<li class="chapter " data-level="1.37" data-path="paging.html">
<a href="paging.html">
Paging
</a>
</li>
<li class="chapter " data-level="1.38" data-path="scheduled-messages.html">
<a href="scheduled-messages.html">
Scheduled Messages
</a>
</li>
<li class="chapter " data-level="1.39" data-path="last-value-queues.html">
<a href="last-value-queues.html">
Last-Value Queues
</a>
</li>
<li class="chapter " data-level="1.40" data-path="ring-queues.html">
<a href="ring-queues.html">
Ring Queues
</a>
</li>
<li class="chapter " data-level="1.41" data-path="retroactive-addresses.html">
<a href="retroactive-addresses.html">
Retroactive Addresses
</a>
</li>
<li class="chapter " data-level="1.42" data-path="exclusive-queues.html">
<a href="exclusive-queues.html">
Exclusive Queues
</a>
</li>
<li class="chapter " data-level="1.43" data-path="message-grouping.html">
<a href="message-grouping.html">
Message Grouping
</a>
</li>
<li class="chapter " data-level="1.44" data-path="consumer-priority.html">
<a href="consumer-priority.html">
Consumer Priority
</a>
</li>
<li class="chapter " data-level="1.45" data-path="pre-acknowledge.html">
<a href="pre-acknowledge.html">
Extra Acknowledge Modes
</a>
</li>
<li class="chapter " data-level="1.46" data-path="management.html">
<a href="management.html">
Management
</a>
</li>
<li class="chapter " data-level="1.47" data-path="management-console.html">
<a href="management-console.html">
Management Console
</a>
</li>
<li class="chapter " data-level="1.48" data-path="metrics.html">
<a href="metrics.html">
Metrics
</a>
</li>
<li class="chapter " data-level="1.49" data-path="security.html">
<a href="security.html">
Security
</a>
</li>
<li class="chapter " data-level="1.50" data-path="masking-passwords.html">
<a href="masking-passwords.html">
Masking Passwords
</a>
</li>
<li class="chapter active" data-level="1.51" data-path="broker-plugins.html">
<a href="broker-plugins.html">
Broker Plugins
</a>
</li>
<li class="chapter " data-level="1.52" data-path="resource-limits.html">
<a href="resource-limits.html">
Resource Limits
</a>
</li>
<li class="chapter " data-level="1.53" data-path="jms-bridge.html">
<a href="jms-bridge.html">
The JMS Bridge
</a>
</li>
<li class="chapter " data-level="1.54" data-path="client-reconnection.html">
<a href="client-reconnection.html">
Client Reconnection and Session Reattachment
</a>
</li>
<li class="chapter " data-level="1.55" data-path="diverts.html">
<a href="diverts.html">
Diverting and Splitting Message Flows
</a>
</li>
<li class="chapter " data-level="1.56" data-path="core-bridges.html">
<a href="core-bridges.html">
Core Bridges
</a>
</li>
<li class="chapter " data-level="1.57" data-path="transformers.html">
<a href="transformers.html">
Transformers
</a>
</li>
<li class="chapter " data-level="1.58" data-path="duplicate-detection.html">
<a href="duplicate-detection.html">
Duplicate Message Detection
</a>
</li>
<li class="chapter " data-level="1.59" data-path="clusters.html">
<a href="clusters.html">
Clusters
</a>
</li>
<li class="chapter " data-level="1.60" data-path="federation.html">
<a href="federation.html">
Federation
</a>
<ul class="articles">
<li class="chapter " data-level="1.60.1" data-path="federation-address.html">
<a href="federation-address.html">
Address Federation
</a>
</li>
<li class="chapter " data-level="1.60.2" data-path="federation-queue.html">
<a href="federation-queue.html">
Queue Federation
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.61" data-path="ha.html">
<a href="ha.html">
High Availability and Failover
</a>
</li>
<li class="chapter " data-level="1.62" data-path="graceful-shutdown.html">
<a href="graceful-shutdown.html">
Graceful Server Shutdown
</a>
</li>
<li class="chapter " data-level="1.63" data-path="libaio.html">
<a href="libaio.html">
Libaio Native Libraries
</a>
</li>
<li class="chapter " data-level="1.64" data-path="thread-pooling.html">
<a href="thread-pooling.html">
Thread management
</a>
</li>
<li class="chapter " data-level="1.65" data-path="web-server.html">
<a href="web-server.html">
Embedded Web Server
</a>
</li>
<li class="chapter " data-level="1.66" data-path="logging.html">
<a href="logging.html">
Logging
</a>
</li>
<li class="chapter " data-level="1.67" data-path="rest.html">
<a href="rest.html">
REST Interface
</a>
</li>
<li class="chapter " data-level="1.68" data-path="embedding-activemq.html">
<a href="embedding-activemq.html">
Embedding the Broker
</a>
</li>
<li class="chapter " data-level="1.69" data-path="karaf.html">
<a href="karaf.html">
Apache Karaf
</a>
</li>
<li class="chapter " data-level="1.70" data-path="tomcat.html">
<a href="tomcat.html">
Apache Tomcat
</a>
</li>
<li class="chapter " data-level="1.71" data-path="spring-integration.html">
<a href="spring-integration.html">
Spring Integration
</a>
</li>
<li class="chapter " data-level="1.72" data-path="cdi-integration.html">
<a href="cdi-integration.html">
CDI Integration
</a>
</li>
<li class="chapter " data-level="1.73" data-path="intercepting-operations.html">
<a href="intercepting-operations.html">
Intercepting Operations
</a>
</li>
<li class="chapter " data-level="1.74" data-path="data-tools.html">
<a href="data-tools.html">
Data Tools
</a>
</li>
<li class="chapter " data-level="1.75" data-path="maven-plugin.html">
<a href="maven-plugin.html">
Maven Plugin
</a>
</li>
<li class="chapter " data-level="1.76" data-path="unit-testing.html">
<a href="unit-testing.html">
Unit Testing
</a>
</li>
<li class="chapter " data-level="1.77" data-path="perf-tuning.html">
<a href="perf-tuning.html">
Troubleshooting and Performance Tuning
</a>
</li>
<li class="chapter " data-level="1.78" data-path="configuration-index.html">
<a href="configuration-index.html">
Configuration Reference
</a>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Published with GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Broker Plugins</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="apache-activemq-artemis-plugin-support">Apache ActiveMQ Artemis Plugin Support</h1>
<p>Apache ActiveMQ Artemis is designed to allow extra functionality to be added by
creating a plugin. Multiple plugins can be registered at the same time and they
will be chained together and executed in the order they are registered (i.e.
the first plugin registered is always executed first).</p>
<p>Creating a plugin is very simple. It requires:</p>
<ul>
<li>Implementing the <a href="https://github.com/apache/activemq-artemis/blob/master/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/plugin/ActiveMQServerPlugin.java" target="_blank"><code>ActiveMQServerPlugin</code></a>
interface</li>
<li>Making sure the plugin is <a href="using-server.html#adding-runtime-dependencies">on the classpath</a></li>
<li>Registering it with the broker either via <a href="#registering-a-plugin">xml</a> or <a href="#registering-a-plugin-programmatically">programmatically</a>.</li>
</ul>
<p>Only the methods that you want to add behavior for need to be implemented as
all of the interface methods are default methods.</p>
<h2 id="registering-a-plugin">Registering a Plugin</h2>
<p>To register a plugin with by XML you need to add the <code>broker-plugins</code> element
at the <code>broker.xml</code>. It is also possible to pass configuration to a plugin
using the <code>property</code> child element(s). These properties (zero to many) will be
read and passed into the plugin&apos;s <code>init(Map&lt;String, String&gt;)</code> operation after
the plugin has been instantiated.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">broker-plugins</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">broker-plugin</span> <span class="hljs-attr">class-name</span>=<span class="hljs-string">&quot;some.plugin.UserPlugin&quot;</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">property</span> <span class="hljs-attr">key</span>=<span class="hljs-string">&quot;property1&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;val_1&quot;</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">property</span> <span class="hljs-attr">key</span>=<span class="hljs-string">&quot;property2&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;val_2&quot;</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">broker-plugin</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">broker-plugins</span>&gt;</span>
</code></pre>
<h2 id="registering-a-plugin-programmatically">Registering a Plugin Programmatically</h2>
<p>For registering a plugin programmatically you need to call the
<code>registerBrokerPlugin()</code> method and pass in a new instance of your plugin. In
the example below assuming your plugin is called <code>UserPlugin</code>, registering it
looks like the following:</p>
<pre><code class="lang-java">...
Configuration config = <span class="hljs-keyword">new</span> ConfigurationImpl();
...
config.registerBrokerPlugin(<span class="hljs-keyword">new</span> UserPlugin());
</code></pre>
<h2 id="using-the-loggingactivemqserverplugin">Using the <code>LoggingActiveMQServerPlugin</code></h2>
<p>The <code>LoggingActiveMQServerPlugin</code> logs specific broker events.</p>
<p>You can select which events are logged by setting the following configuration
properties to <code>true</code>.</p>
<table>
<thead>
<tr>
<th>Property</th>
<th>Trigger Event</th>
<th>Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>LOG_CONNECTION_EVENTS</code></td>
<td>Connection is created/destroy.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>LOG_SESSION_EVENTS</code></td>
<td>Session is created/closed.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>LOG_CONSUMER_EVENTS</code></td>
<td>Consumer is created/closed</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>LOG_DELIVERING_EVENTS</code></td>
<td>Message is delivered to a consumer and when a message is acknowledged by a consumer.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>LOG_SENDING_EVENTS</code></td>
<td>When a message has been sent to an address and when a message has been routed within the broker.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>LOG_INTERNAL_EVENTS</code></td>
<td>When a queue created/destroyed, when a message is expired, when a bridge is deployed and when a critical failure occurs.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>LOG_ALL_EVENTS</code></td>
<td>Includes all the above events.</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>
<p>By default the <code>LoggingActiveMQServerPlugin</code> will not log any information. The
logging is activated by setting one (or a selection) of the above configuration
properties to <code>true</code>.</p>
<p>To configure the plugin, you can add the following configuration to the broker.
In the example below both <code>LOG_DELIVERING_EVENTS</code> and <code>LOG_SENDING_EVENTS</code> will
be logged by the broker.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">broker-plugins</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">broker-plugin</span> <span class="hljs-attr">class-name</span>=<span class="hljs-string">&quot;org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin&quot;</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">property</span> <span class="hljs-attr">key</span>=<span class="hljs-string">&quot;LOG_DELIVERING_EVENTS&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;true&quot;</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">property</span> <span class="hljs-attr">key</span>=<span class="hljs-string">&quot;LOG_SENDING_EVENTS&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;true&quot;</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">broker-plugin</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">broker-plugins</span>&gt;</span>
</code></pre>
<p>Most events in the <code>LoggingActiveMQServerPlugin</code> follow a <code>beforeX</code> and
<code>afterX</code> notification pattern (e.g <code>beforeCreateConsumer()</code> and
<code>afterCreateConsumer()</code>).</p>
<p>At Log Level <code>INFO</code>, the LoggingActiveMQServerPlugin logs an entry when an
<code>afterX</code> notification occurs. By setting the logger
<code>org.apache.activemq.artemis.core.server.plugin.impl</code> to <code>DEBUG</code>, log entries
are generated for both <code>beforeX</code> and <code>afterX</code> notifications. Log level <code>DEBUG</code>
will also log more information for a notification when available.</p>
<h2 id="using-the-notificationactivemqserverplugin">Using the NotificationActiveMQServerPlugin</h2>
<p>The NotificationActiveMQServerPlugin can be configured to send extra
notifications for specific broker events.</p>
<p>You can select which notifications are sent by setting the following
configuration properties to <code>true</code>.</p>
<table>
<thead>
<tr>
<th>Property</th>
<th>Property Description</th>
<th>Default Value</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>SEND_CONNECTION_NOTIFICATIONS</code></td>
<td>Sends a notification when a Connection is created/destroy.</td>
<td><code>false</code>.</td>
</tr>
<tr>
<td><code>SEND_SESSION_NOTIFICATIONS</code></td>
<td>Sends a notification when a Session is created/closed.</td>
<td><code>false</code>.</td>
</tr>
<tr>
<td><code>SEND_ADDRESS_NOTIFICATIONS</code></td>
<td>Sends a notification when an Address is added/removed.</td>
<td><code>false</code>.</td>
</tr>
<tr>
<td><code>SEND_DELIVERED_NOTIFICATIONS</code></td>
<td>Sends a notification when message is delivered to a consumer.</td>
<td><code>false</code></td>
</tr>
<tr>
<td><code>SEND_EXPIRED_NOTIFICATIONS</code></td>
<td>Sends a notification when message has been expired by the broker.</td>
<td><code>false</code></td>
</tr>
</tbody>
</table>
<p>By default the NotificationActiveMQServerPlugin will not send any
notifications. The plugin is activated by setting one (or a selection) of the
above configuration properties to <code>true</code>.</p>
<p>To configure the plugin, you can add the following configuration to the broker.
In the example below both <code>SEND_CONNECTION_NOTIFICATIONS</code> and
<code>SEND_SESSION_NOTIFICATIONS</code> will be sent by the broker.</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">broker-plugins</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">broker-plugin</span> <span class="hljs-attr">class-name</span>=<span class="hljs-string">&quot;org.apache.activemq.artemis.core.server.plugin.impl.NotificationActiveMQServerPlugin&quot;</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">property</span> <span class="hljs-attr">key</span>=<span class="hljs-string">&quot;SEND_CONNECTION_NOTIFICATIONS&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;true&quot;</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">property</span> <span class="hljs-attr">key</span>=<span class="hljs-string">&quot;SEND_SESSION_NOTIFICATIONS&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;true&quot;</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">broker-plugin</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">broker-plugins</span>&gt;</span>
</code></pre>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="masking-passwords.html" class="navigation navigation-prev " aria-label="Previous page: Masking Passwords">
<i class="fa fa-angle-left"></i>
</a>
<a href="resource-limits.html" class="navigation navigation-next " aria-label="Next page: Resource Limits">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Broker Plugins","level":"1.51","depth":1,"next":{"title":"Resource Limits","level":"1.52","depth":1,"path":"resource-limits.md","ref":"resource-limits.md","articles":[]},"previous":{"title":"Masking Passwords","level":"1.50","depth":1,"path":"masking-passwords.md","ref":"masking-passwords.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/artemis","issues":"https://issues.apache.org/jira/browse/ARTEMIS","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis User Guide and Reference Documentation"},"file":{"path":"broker-plugins.md","mtime":"2020-01-10T14:13:27.000Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-01-10T14:51:01.535Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
<script src="gitbook/gitbook-plugin-search/search.js"></script>
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>