blob: 72d19a7cdce8b4d391e7e0c5ef2ac3fad4661623 [file] [log] [blame]
<!DOCTYPE html>
<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>12.4. Broker Customization - Apache Qpid&#8482;</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
<link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
<script type="text/javascript">var _deferredFunctions = [];</script>
<script type="text/javascript" src="/deferred.js" defer="defer"></script>
<!--[if lte IE 8]>
<link rel="stylesheet" href="/ie.css" type="text/css"/>
<script type="text/javascript" src="/html5shiv.js"></script>
<![endif]-->
<!-- Redirects for `go get` and godoc.org -->
<meta name="go-import"
content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
<meta name="go-source"
content="qpid.apache.org
https://github.com/apache/qpid-proton/blob/go1/README.md
https://github.com/apache/qpid-proton/tree/go1{/dir}
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</head>
<body>
<div id="-content">
<div id="-top" class="panel">
<a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
<a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
<ul id="-global-navigation">
<li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
<li><a href="/documentation.html">Documentation</a></li>
<li><a href="/download.html">Download</a></li>
<li><a href="/discussion.html">Discussion</a></li>
</ul>
</div>
<div id="-menu" class="panel" style="display: none;">
<div class="flex">
<section>
<h3>Project</h3>
<ul>
<li><a href="/overview.html">Overview</a></li>
<li><a href="/components/index.html">Components</a></li>
<li><a href="/releases/index.html">Releases</a></li>
</ul>
</section>
<section>
<h3>Messaging APIs</h3>
<ul>
<li><a href="/proton/index.html">Qpid Proton</a></li>
<li><a href="/components/jms/index.html">Qpid JMS</a></li>
<li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
</ul>
</section>
<section>
<h3>Servers and tools</h3>
<ul>
<li><a href="/components/broker-j/index.html">Broker-J</a></li>
<li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
<li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
</ul>
</section>
<section>
<h3>Resources</h3>
<ul>
<li><a href="/dashboard.html">Dashboard</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
<li><a href="/resources.html">More resources</a></li>
</ul>
</section>
</div>
</div>
<div id="-search" class="panel" style="display: none;">
<form action="http://www.google.com/search" method="get">
<input type="hidden" name="sitesearch" value="qpid.apache.org"/>
<input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
<button type="submit">Search</button>
<a href="/search.html">More ways to search</a>
</form>
</div>
<div id="-middle" class="panel">
<ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.2.0/index.html">Qpid Broker-J 9.2.0</a></li><li><a href="/releases/qpid-broker-j-9.2.0/book/index.html">Apache Qpid Broker-J</a></li><li>12.4. Broker Customization</li></ul>
<div id="-middle-content">
<div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">12.4. Broker Customization</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Docker-Broker-Users.html">Prev</a> </td><th width="60%" align="center">Chapter 12. Docker Images</th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Java-Broker-Docker-Broker-Customization"></a>12.4. Broker Customization</h2></div></div></div><p>
To customize broker before building the container image, its configuration files may be edited to start
broker with queues, exchanges, users or other objects.
</p><p>
The file config.json contains definitions of the broker objects and references a file containing definitions
of virtualhost objects (exchanges and queues).
</p><p>
It may be helpful first to create broker objects needed via broker web GUI or via REST API, and then
investigate the configuration files and copy the appropriate definitions to the configuration files used
for container image creation.
</p><p>
An example of the default initial configuration JSON file is provided in broker book
(<a class="link" href="Java-Broker-Initial-Configuration.html" title="Chapter 5. Initial Configuration">chapter 5.7</a>).
</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Docker-Broker-Customization-Exchanges"></a>12.4.1. Exchanges</h3></div></div></div><p>
To create exchanges a JSON element "exchanges" should be created containing an array of single
exchange definitions:
</p><p>
</p><pre class="programlisting">
"exchanges" : [ {
"name" : "amq.direct",
"type" : "direct"
}, {
"name" : "amq.fanout",
"type" : "fanout"
}, {
"name" : "amq.match",
"type" : "headers"
}, {
"name" : "amq.topic",
"type" : "topic"
}, {
"name" : "request.QUEUE1",
"type" : "topic",
"durable" : true,
"durableBindings" : [ {
"arguments" : { },
"destination" : "QUEUE1",
"bindingKey" : "#"
} ],
"unroutableMessageBehaviour" : "REJECT"
} ]
</pre><p>
</p><p>
Information about exchanges, their types and properties can be found in broker book
(<a class="link" href="Java-Broker-Concepts-Exchanges.html" title="4.6. Exchanges">chapter 4.6</a>).
</p><p>
Please note that each virtualhost pre-declares several exchanges, described in the broker book
(<a class="link" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-Predeclared" title="4.6.1. Predeclared Exchanges">chapter 4.6.1</a>).
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Docker-Broker-Customization-Queues"></a>12.4.2. Queues</h3></div></div></div><p>
To create queue a JSON element "queues" should be created containing an array of single queue definitions:
</p><p>
</p><pre class="programlisting">
"queues" : [ {
"name" : "QUEUE1",
"type" : "standard",
"durable" : true,
"maximumQueueDepthBytes" : 6144000,
"maximumQueueDepthMessages" : 6000,
"messageDurability" : "ALWAYS",
"overflowPolicy" : "REJECT"
}, {
"name" : "QUEUE2",
"type" : "standard",
"durable" : true,
"maximumQueueDepthBytes" : 6144000,
"maximumQueueDepthMessages" : 6000,
"messageDurability" : "ALWAYS",
"overflowPolicy" : "REJECT"
} ]
</pre><p>
</p><p>
Information about queues, their types and properties can be found in broker book
(<a class="link" href="Java-Broker-Concepts-Queues.html" title="4.7. Queues">chapter 4.7</a>).
</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Docker-Broker-Customization-Users"></a>12.4.3. Users</h3></div></div></div><p>
Users can be defined in an authentication provider. Authentication providers are defined on broker
level (file config.json).
</p><p>
Information about authentication providers, their types and properties can be found in broker book
(<a class="link" href="Java-Broker-Security.html#Java-Broker-Security-Authentication-Providers" title="8.1. Authentication Providers">chapter 8.1</a>).
</p><p>
Examples for most commonly used authentication providers can be found below.
</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Docker-Broker-Customization-Users-Anonymous"></a>12.4.3.1. Anonymous Authentication Provider</h4></div></div></div><p>
</p><pre class="programlisting">
"authenticationproviders" : [ {
"name" : "anon",
"type" : "Anonymous"
} ]
</pre><p>
</p><p>
For additional details see broker book
(<a class="link" href="Java-Broker-Security.html#Java-Broker-Security-Anonymous-Provider" title="8.1.5. Anonymous">chapter 8.1.5</a>).
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Docker-Broker-Customization-Users-Plain"></a>12.4.3.2. Plain Authentication Provider</h4></div></div></div><p>
</p><pre class="programlisting">
"authenticationproviders" : [{
"name" : "plain",
"type" : "Plain",
"secureOnlyMechanisms" : [],
"users" : [ {
"name" : "admin",
"type" : "managed",
"password" : "&lt;PASSWORD&gt;"
} ]
} ]
</pre><p>
</p><p>
For additional details see broker book
(<a class="link" href="Java-Broker-Security.html#Java-Broker-Security-Plain-Provider" title="8.1.7. Plain">chapter 8.1.7</a>).
</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Docker-Broker-Customization-Users-ACL"></a>12.4.3.3. ACL Rules</h4></div></div></div><p>
The ACL rules for users are defined in file broker.acl following the syntax:
</p><p>
</p><pre class="programlisting">
ACL {permission} {&lt;group-name&gt;|&lt;user-name&gt;|ALL} {action|ALL} [object|ALL] [property=&lt;property-values&gt;]
</pre><p>
</p><p>
The predefined broker.acl file contains permissions for the 'admin' user:
</p><p>
</p><pre class="programlisting">
# account 'admin' - enabled all actions
ACL ALLOW-LOG admin ALL ALL
</pre><p>
</p><p>
For additional details see broker book
(<a class="link" href="Java-Broker-Security-AccessControlProviders.html#Java-Broker-Security-AccessControlProviders-ACLRules" title="8.3.2.  ACL Rules">chapter 8.3.2</a>).
</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Docker-Broker-Customization-Override"></a>12.4.4. Overriding Broker Configuration</h3></div></div></div><p>
Customized configuration for the Broker-J instance can be used by replacing the files residing in the work
folder with the custom ones, e.g. config.json or default.json. Put the replacement files inside a folder
and map it as a volume to:
</p><p>
</p><pre class="programlisting">
docker run -d -p 5672:5672 -p 8080:8080 -v &lt;DIRECTORY_ON_HOST&gt;:/qpid-broker-j/work-override:Z --name qpid &lt;IMAGE_NAME&gt;
</pre><p>
</p><p>
The contents of work-override folder will be copied over to work folder first time after the instance creation so that
the broker will start with user-supplied configuration.
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Docker-Broker-Users.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Docker.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">12.3. Broker Users </td><td width="20%" align="center"><a accesskey="h" href="Apache-Qpid-Broker-J-Book.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div>
<hr/>
<ul id="-apache-navigation">
<li><a href="http://www.apache.org/">Apache</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
<li><a href="/security.html">Security</a></li>
<li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
</ul>
<p id="-legal">
Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
The Apache Software Foundation; Licensed under
the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
Proton, Apache, the Apache feather logo, and the Apache Qpid
project logo are trademarks of The Apache Software
Foundation; All other marks mentioned may be trademarks or
registered trademarks of their respective owners
</p>
</div>
</div>
</div>
</body>
</html>