# Moogsoft Docs

## Message Bus

The Moogsoft Messaging System (MooMS) is the message bus component of Moogsoft AIOps and shares event dat a. This is subscribed to by the various Moolets.

The message bus is a publish-subscribe message brokering system implemented with RabbitMQ which uses AMQP , an open standard for message-orientated middleware, over TCP.

## Message Handling

The Message Bus handles the data it receives (e.g. raw event data, new alerts, Situation activity etc) by placing it in queues, which are lines of messages waiting to be handled.

Moogsoft AIOps does not enforce any size or time limits on queues, so the maximum number of messages in a queue is limited by the available RAM and disk space on the server. It also depends on the size of the Alerts and Situations being generated. The size limit is 128kb for Alerts and 64kb for Situations.

Once the maximum number of messages has been reached, t he broker drops messages from the front of the queue to make room for new messages. By default, Moogsoft applications use exclusive transient queues. For example, if AIOps or the broker shuts down or dies then the queue and all of its messages will be lost. Durable queues can be enabled using the  message_persistence  setting in  \$MOOGSOFT_HOME/config/system.conf  (see Message Persistance ).

For more information see the RabbitMQ docs on queues and queue length .

## Default Configuration

By default, AIOps installs with a single RabbitMQ broker running on the same machine as the other AIOps components (LAMs, moog_farmd, the Moolets, etc.).

The out-of-the-box configuration is:

port: 5672
zone: <none>
password: m00gs0ft.

The username and password always need to match the Message Bus broker configuration. If commented out, a default "guest" user will be used (guest: guest).

## Zones

You can use zones, or virtual hosts, to share a single RabbitMQ broker cluster among multiple instances of AIOps.

If multiple instances of AIOps share a single RabbitMQ broker then each instance uses a different zone name to prevent message interference. In RabbitMQ, a zone is called a virtual host (  vhost  ). Clients connecting to one  vhost  cannot see messages sent to a different  vhost  .

The default deployment does not use zones. If you specify a zone name, you must also configure a  vhost  with the same name in the RabbitMQ broker.

By default, AIOps clients connect to the  vhost  specified during  moog-init.sh  setup with the "  moogsoft  " username and the password.

For distributed installations using multiple RabbitMQ brokers, this must be configured. A zone (  vhost  ) name is required by the  moog-init.sh  setup script. S ee Message System Deployment .

## Message Persistance

You can control and minimize message loss during a shutdown or failure using the following settings in  system.conf: 

#### message_persistence

Controls whether MooMS will persist i mportant messages or not in the event of an application or message broker restart. This affects how the message bus handles messages.

Type : Boolean

Default :  false 

#### max_retries

The number of attempts to re-send a failed message, used in conjunction with  retry_interval  .

Type : Number
Default :  100 

#### retry_interval

The time to wait in milliseconds between each re-send attempt. The combination of 100 retries and a 200 msec  retry_interval  gives a total of 20 seconds, which is typical duration for broker failover in a high availability environment.

Type : Number
Default :  200 

#### cache_on_failure

Controls whether the message is cached internally and resent. If enabled, a message is cached is an initial retry, controlled by  max_retry  and  retry_interval  , is a failure.

Type : Boolean
Default :  false 

#### cache_ttl

Specifies how many seconds a cached message lives for in the cache list. The system will attemp to resend any cached messages in the order they were put on the cache until their cache time-to-live (  cache_ttl  ) value has been reached. Any messages not sent sucessfully sent will be discarded. This value will have a direct impact on sender process memory.

Type : Number
Default :  900 

#### confirmation_timeout

Defines the time to wait for confirmation from a RabbitMQ Broker that it has received the sent message.

### Warning

Moogsoft advises you do not change this value.

Type : Number
Default :  2000