<!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>Overview - 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>Overview</li></ul>

        <div id="-middle-content">
          <h1 id="overview">Overview</h1>

<h2 id="the-challenge">The challenge</h2>

<p>Modern large-scale applications are rarely built as monoliths.
Instead, they are built as distributed network applications, with
parts of the application in distinct processes and distinct parts of
the world.</p>

<p>All the same, the parts need to work together to behave as one
reliable application. They need a way to communicate, and they must
be able to tolerate failures.</p>

<h2 id="messaging-is-a-better-way">Messaging is a better way</h2>

<p>Modern messaging systems aren't the only way to get processes talking.
Your application's parts can share a view into a database, or you can
use HTTP and REST to expose information.  But these approaches have
some serious drawbacks.  A database is reliable, but it isn't designed
to intermediate communication.  Its focus is storing data, not moving
it between processes.  REST helps you communicate efficiently, but it
offers no reliability.  If the party you're talking to is unavailable,
the transmission is dropped.</p>

<p>A store-and-forward messaging system gives you efficient, reliable
communication.  Message brokers take responsibility for ensuring
messages reach their destination, even if the destination is
temporarily out of reach.  Messaging APIs manage acknowledgments so
that no messages are dropped in transit.</p>

<h2 id="proprietary-messaging-solutions">Proprietary messaging solutions</h2>

<p>For decades, the messaging approach to application integration was
available only from proprietary vendors.  Each vendor had its own
messaging API and its own wire protocol, and without going to trouble,
they wouldn't interoperate.  Imagine each web server vendor using its
own protocol.  That would seem intolerable, but that's precisely the
situation messaging was in.</p>

<p>With the introduction of the
<a href="http://en.wikipedia.org/wiki/Java_Message_Service">Java Message Service</a>
API, things got a little better.  Now we had a standard messaging API.
But JMS doesn't define a standard wire protocol, and it doesn't help
you if you're not using Java.</p>

<h2 id="qpid-and-amqp">Qpid and AMQP</h2>

<p><a href="/amqp/index.html">AMQP</a> is the first open standard wire
protocol for messaging.  AMQP is foremost about the choices it gives
you.  You can choose any AMQP solution you prefer, and if the one you
chose doesn't work out, you can switch.  Your application will still
work.</p>

<p>The Qpid project aims to spur the growth of the AMQP ecosystem.  We
offer messaging APIs and message brokers for use in your application,
and core libraries for making AMQP part of your own messaging product.</p>

<ul>
<li><p><em>Open source</em> - We do our work in the community, and you can gain
from our contributions just as we can gain from yours.</p></li>
<li><p><em>Many languages, many platforms</em> - We want AMQP to be available
everywhere.  That's why we have focused on supporting a wide range
of programming languages and computing environments.</p></li>
<li><p><em>Application development</em> - Messaging is essential to reliable
distributed applications, and we offer the tools you need to build
one.  Check out our
<a href="/components/index.html#messaging-apis">messaging APIs</a>.</p></li>
<li><p><em>Messaging infrastructure</em> - You can design and deploy an AMQP
network that integrates with other services in your organization.
See our
<a href="/components/index.html#messaging-servers">messaging servers</a>.</p></li>
<li><p><em>Your messaging product</em> - We know that there are many established
messaging systems, and we want to make it easy for them to speak
AMQP.  Consider using <a href="/proton/index.html">Qpid Proton</a>
instead of developing your own protocol support.</p></li>
</ul>

<h2 id="the-future-of-messaging-is-bigger-still">The future of messaging is bigger still</h2>

<p>Traditional messaging has focused on the back office, with just one
logical broker at the center of things.  The AMQP 1.0 standard makes
messaging possible in a new, larger dimension.  The next incarnation
of messaging will provide a diverse network of messaging
intermediaries.  It will leverage redundancy in the network to route
around failures, just as TCP and routers do, and it will allow
messaging applications to operate at unprecedented scale.</p>

<p>The Qpid community is building the foundations for these new
technologies.</p>

<h2 id="more-information">More information</h2>

<ul>
<li><a href="get-involved.html">How to get involved</a></li>
<li><a href="http://www.apache.org/foundation/press/pr_2009_03_03.html">Qpid is a top-level project at Apache</a></li>
</ul>


          <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>
