<!--
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.
-->
<h2 id="release-notes---apache-activemq-artemis-1.1.0">Release Notes - Apache ActiveMQ Artemis 1.1.0</h2>
<p>A complete list for JIRAs for the 1.1.0 release can be found at the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12332642&amp;styleName=Html&amp;projectId=12315920&amp;Create=Create&amp;atl_token=A5KQ-2QAV-T4JA-FDED%7C708a588702fdb54724fe817fd07ee4c5610de292%7Clin">Apache ActiveMQ Artemis project JIRA</a></p>
<p>Overall Apache ActiveMQ Artemis 1.1.0 has several improvements and it's a nice polish on top of Apache ActiveMQ Artemis 1.0.0, things like better examples, better OpenWire support and the first release of MQTT.</p>
<p>We would like to highlight the following accomplishments on this release:</p>
<ul>
<li><p>[<a href="https://issues.apache.org/jira/browse/ARTEMIS-154">ARTEMIS-154</a>] This is our first implementation of the MQTT support.</p></li>
<li><p><a href="https://issues.apache.org/jira/browse/ARTEMIS-178">ARTEMIS-178</a> The examples are now using the CLI to create and start servers reflecting real cases used in production. The documentation about the examples has been updated. Please refer to the documentation for more information about this.</p></li>
<li><p>[<a href="https://issues.apache.org/jira/browse/ARTEMIS-116">ARTEMIS-116</a>] The CLI has been improved. There are new tools to compact the journal and we did a lot of polish around the CLI.</p></li>
<li><p><strong>Improvements on OpenWire</strong> We fixed several issues around OpenWire</p></li>
</ul>
<h3 id="where-we-are-still-improving.">Where we are still improving.</h3>
<p>1.1.0 has improved a lot, and these are the areas we are still working on:</p>
<ul>
<li><p>This is the first release with MQTT. We would like to hear from you if you have any issues around MQTT as we are continuously improving the MQTT support</p></li>
<li>Short list of what need to be implemented on OpenWire for future releases:
<ul>
<li>Reconnection</li>
<li>Better Flow Control on producers</li>
<li>Compressed messages</li>
<li>Optimized ACKs</li>
<li>Streamlet support</li>
</ul></li>
</ul>
<h2 id="release-notes---apache-activemq-artemis-1.0.0">Release Notes - Apache ActiveMQ Artemis 1.0.0</h2>
<p>The Apache ActiveMQ Artemis 1.0.0 release notes can be found in the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12328953">Apache ActiveMQ Artemis project JIRA</a>. For more info on what this release has to offer please refer to the quick start guide or the user manual. Enjoy!!</p>
