<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>

<!-- 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.
-->
<section id="event-framework">
  <title>Event Notification</title>
  <para>Event notification framework provides a means for the Management Server components to
    publish and subscribe to &PRODUCT; events. Event notification is achieved by implementing the
    concept of event bus abstraction in the Management Server. An event bus is introduced in the
    Management Server that allows the &PRODUCT; components and extension plug-ins to subscribe to the
    events by using the Advanced Message Queuing Protocol (AMQP) client. In &PRODUCT;, a default
    implementation of event bus is provided as a plug-in that uses the RabbitMQ AMQP client. The
    AMQP client pushes the published events to a compatible AMQP server. Therefore all the &PRODUCT;
    events are published to an exchange in the AMQP server. </para>
  <para>A new event for state change, resource state change, is introduced as part of Event
    notification framework. Every resource, such as user VM, volume, NIC, network, public IP,
    snapshot, and template, is associated with a state machine and generates events as part of the
    state change. That implies that a change in the state of a resource results in a state change
    event, and the event is published in the corresponding state machine on the event bus. All the
    &PRODUCT; events (alerts, action events, usage events) and the additional category of resource
    state change events, are published on to the events bus.</para>
  <formalpara>
    <title>Use Cases</title>
    <para>The following are some of the use cases:</para>
  </formalpara>
  <itemizedlist>
    <listitem>
      <para>Usage or Billing Engines: A third-party cloud usage solution can implement a plug-in
        that can connects to &PRODUCT; to subscribe to &PRODUCT; events and generate usage data. The
        usage data is consumed by their usage software.</para>
    </listitem>
    <listitem>
      <para>AMQP plug-in can place all the events on the a message queue, then a AMQP message broker
        can provide topic-based notification to the subscribers.</para>
    </listitem>
    <listitem>
      <para>Publish and Subscribe notification service can be implemented as a pluggable service in
        &PRODUCT; that can provide rich set of APIs for event notification, such as topics-based
        subscription and notification. Additionally, the pluggable service can deal with
        multi-tenancy, authentication, and authorization issues.</para>
    </listitem>
  </itemizedlist>
  <formalpara>
    <title>Configuration</title>
    <para>As a &PRODUCT; administrator, perform the following one-time configuration to enable event
      notification framework. At run time no changes can control the behaviour.</para>
  </formalpara>
  <orderedlist>
    <listitem>
      <para>Open <filename>'componentContext.xml</filename>.</para>
    </listitem>
    <listitem>
      <para>Define a bean named <filename>eventNotificationBus</filename> as follows:</para>
      <itemizedlist>
        <listitem>
          <para>name : Specify a name for the bean.</para>
        </listitem>
        <listitem>
          <para>server : The name or the IP address of the RabbitMQ AMQP server.</para>
        </listitem>
        <listitem>
          <para>port : The port on which RabbitMQ server is running.</para>
        </listitem>
        <listitem>
          <para>username : The username associated with the account to access the RabbitMQ
            server.</para>
        </listitem>
        <listitem>
          <para>password : The password associated with the username of the account to access the
            RabbitMQ server.</para>
        </listitem>
        <listitem>
          <para>exchange : The exchange name on the RabbitMQ server where &PRODUCT; events are
            published.</para>
          <para>A sample bean is given below:</para>
          <programlisting>&lt;bean id="eventNotificationBus" class="org.apache.cloudstack.mom.rabbitmq.RabbitMQEventBus"&gt;
    &lt;property name="name" value="eventNotificationBus"/&gt;
    &lt;property name="server" value="127.0.0.1"/&gt;
    &lt;property name="port" value="5672"/&gt;
    &lt;property name="username" value="guest"/&gt;
    &lt;property name="password" value="guest"/&gt;
   &lt;property name="exchange" value="cloudstack-events"/&gt;
   &lt;/bean&gt;</programlisting>
          <para>The <filename>eventNotificationBus</filename> bean represents the
              <filename>org.apache.cloudstack.mom.rabbitmq.RabbitMQEventBus</filename> class.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>Restart the Management Server.</para>
    </listitem>
  </orderedlist>
</section>
