# 1. Introduction to 60East Technologies AMPS

Thank you for choosing the Advanced Message Processing System (AMPS) from 60East Technologies. AMPS is a feature-rich message processing system that delivers previously unattainable low-latency and high-throughput performance to users. AMPS provides both publish-and-subscribe messaging and high-performance message queuing.

## Getting Started with AMPS

AMPS is designed to help you quickly and easily develop and deploy data-intensive applications with demanding requirements for low latency and high performance.

AMPS combines aspects of a traditional message bus, message queue, database, view server, analytics and event processing engine. The features that AMPS provides are designed to be easy to use, to work well together, and to provide high performance.

- The AMPS Introduction Guide provides an overall introduction to AMPS, including information on setting up a development environment, the basic concepts and features of AMPS, and general advice on which features combine effectively for specific scenarios.
- The AMPS Evaluation Guide provides advice on evaluating AMPS, included a suggested evaluation process, tips on monitoring and measuring performance in an evaluation environment, and information on how to effectively partner with 60East on an evaluation of AMPS.
- The AMPS User Guide – this guide – provides a complete overview of the features of AMPS and how to deploy and administer an instance of AMPS.
- The AMPS Configuration Reference describes the AMPS configuration file and the options available to specify the behavior of an instance of AMPS.

These guides cover the general features of AMPS. The 60East website provides additional guides, such as guides for developing applications with AMPS, a guide to the statistics available for monitoring, and so on.

60East recommends starting with the AMPS Introduction Guide to become familiar with AMPS, and then reading the sections of the AMPS User Guide and AMPS Configuration Reference for the features that your application will use. For developers, becoming familar with the Developer Guide for the AMPS Client library that you will be using is also recommended.

## Product Overview

AMPS, the Advanced Message Processing System, is built around an incredibly fast messaging engine that supports both publish-subscribe messaging and queuing. AMPS combines the capabilities necessary for scalable high-throughput, low-latency messaging in realtime deployments such as in financial services. AMPS goes beyond basic messaging to include advanced features such as high availability, historical replay, aggregation and analytics, content filtering and continuous query, last value caching, focus tracking, and more.

Furthermore, AMPS is designed and engineered specifically for next generation computing environments. The architecture, design and implementation of AMPS allows the exploitation of parallelism inherent in emerging multi-socket, multi-core commodity systems and the low-latency, high-bandwidth of 10Gb Ethernet and faster networks. AMPS is designed to detect and take advantage of the capabilities of the hardware of the system on which it runs.

AMPS does more than just route and deliver messages. AMPS was designed to lower the latency in real-world messaging deployments by focusing on the entire lifetime of a message from the message’s origin to the time at which a subscriber takes action on the message. AMPS considers the full message lifetime, rather than just the “in flight” time, and allows you to optimize your applications to conserve network bandwidth and subscriber CPU utilization – typically the first elements of a system to reach the saturation point in real messaging systems.

AMPS offers both topic and content based subscription semantics, which makes it different than most other messaging platforms. Some of the highlights of AMPS include:

- Topic and content based publish and subscribe
- Message queuing, including content-based filtering and configurable strategies for delivery fairness
- Client development kits for popular programming languages such as Java, C#, C++, C, Python, and JavaScript
- Built-in support for FIX, NVFIX, JSON, BSON, MessagePack, BFlat, Google Protocol Buffer and XML messages. AMPS also supports uninterpreted binary messages, and allows you to create composite message types from existing message types.
- State of the World queries
- Historical State of the World queries
- Easy to use command interface
- Full Perl compatible regular expression matching
- Content filters with SQL92 `WHERE` clause semantics
- Built-in latency statistics and client status monitoring
- Advanced subscription management, including delta publish and subscriptions and out-of-focus notifications
- Basic CEP capabilities for real-time computation and analysis
- Aggregation within topics and joins between topics, including joins between different message types
- Replication for high availability
- Fully queryable transaction log
- Message replay functionality
- Fully-integrated authentication and entitlement system, including content-based entitlement for fine-grained control
- Optional encryption (SSL) between client and server
- Extensibility API for adding message types, user-defined functions, user-specified actions, authentication, and entitlement functionality

## Software Requirements

The AMPS server is supported on the following platforms:

- Linux 64-bit (2.6 kernel or later) on x86 compatible processors

Tip

While 2.6 is the minimum kernel version supported, AMPS will select the most efficient mechanisms available to it and as a result, reaps greater benefit from more recent kernel and CPU versions.

The AMPS distribution contains all of the supporting libraries and dependencies needed to run on a typical Linux server installation: no further software is required.

Some utilities provided with the AMPS server have additional dependencies. These utilities are not required to run the server, but can make it easier to troubleshoot and test on the system that hosts the AMPS instance:

- `spark`, a basic command line client that supports a subset of AMPS functionality, requires Java 1.7 or later.
- The utilities for inspecting AMPS files (`amps_sow_dump`, `amps_clients_ack_dump`, and so on) require a Python installation.
- `amps-grep` requires a Python installation.
- `amps-sqlite3` requires a Python installation and the sqlite3 package for your distribution (often, but not always, installed by default).

## Organization of this Manual

This manual is divided into the following parts:

- Part One presents introductory material and a brief overview of AMPS

- Part Two explains the features of AMPS, including information on the following features:

  - Publish and Subscribe
  - Transactional Messaging and Bookmark Subscriptions
  - Message Queues
  - Message Types
  - State of the World (SOW)

  State of the World topics enable many of the other advanced features in AMPS, such as:

  - Aggregating Data with View Topics
  - Conflated Topics
  - Delta Messaging
  - Out of Focus Messages (OOF)
  - Regular Expression Topics

  This section also contains detailed chapters on specific topics, such as the AMPS filter language. Both application developers and administrators should become familiar with this section.

- Part Three discusses AMPS deployment and operations, including:

  - Running AMPS as a Linux Service
  - Logging
  - Event Topics
  - Monitoring Interface
  - Automating AMPS with Actions
  - Replication and High-Availability
  - Operation and Deployment
  - Securing AMPS
  - Troubleshooting AMPS

  This section is most useful for those with a focus on AMPS operations, although the information presented here is helpful for developers who want to design high-performance, high-availability applications that are easy to deploy and maintain.

- Part Four presents information about using AMPS to build applications including:

  - Sample Use Cases

## Document Conventions

This manual is an introduction to the 60East Technologies AMPS product. It assumes that you have a working knowledge of Linux, and uses the following conventions.

Construct | Usage
--- | ---
Text | Standard document text
`Code` | Inline code fragment
Variable | Variables within commands or configuration
Required | Required parameters in parameter tables
`Optional` | Optional parameters in parameter tables

The AMPS documentation also includes the following types of notes:

Tip

Inside the tip box, you will find usage tips or extra information.

Important

Inside the important box, you will find information that’s important to keep in mind when working with AMPS. These are typically recommendations that should generally be followed, but may not be applicable in special cases.

Caution

Inside the caution box, you will find important information and guidelines that require special consideration or caution when using AMPS to ensure the proper functioning of the system and to avoid any potential issues or risks.

Warning

Inside the warning box, you will find usage warnings or information that is critical for ensuring that AMPS functions correctly.

Documentation Conventions

Additionally, here are the constructs used for displaying content filters, XML, code, command line, and script fragments.

`(expr1 = 1) OR (expr2 = 2) OR (expr3 = 3) OR (expr4 = 4) OR (expr5 = 5) OR (expr6 = 6) OR (expr7 = 7) OR (expr8 = 8)`

Command lines will be formatted as in the following example:

    find . -name *.java

## Obtaining Support

For an outline of your specific support policies, please see your 60East Technologies License Agreement. Support contracts can be purchased through your 60East Technologies account representative.

### Support Steps

You can save time if you complete the following steps before you contact 60East Technologies Support:

1. Check the documentation

   The problem may already be solved and documented in the User Guide or Configuration Reference Guide for the product. 60East Technologies also provides answers to frequently asked support questions on the support website at: http://support.crankuptheamps.com.

2. Isolate the problem

   If you require Support Services, please isolate the problem to the smallest test case possible. Capture erroneous output into a text file along with the commands used to generate the errors.

3. Collect your information

   - Your product version number.
   - Your operating system and its kernel version number.
   - The expected behavior, observed behavior and all input used to reproduce the problem.
   - Submit your request.
   - If you have a minidump file, be sure to include that in your email to crash@crankuptheamps.com.

The AMPS version number used when reporting your product version number follows a format listed below. The version number is composed of the following:

    MAJOR.MINOR.PREVIEW.HOTFIX.TIMESTAMP.TAG

### AMPS Versioning and Certification

Each AMPS version number component has the following breakdown:

Version number components
Component | Description | Minimum Verification
--- | --- | ---
`MAJOR` | Increments when there are any backward-incompatible changes in functionality, file formats, client network formats or configuration; or when deprecated functionality is removed. May introduce major new functionality or include internal improvements that introduce major behavioral changes. | Megacert
`MINOR` | Increments when functionality is added in a backwards-compatible way, or when functionality is deprecated. May include internal improvements that introduce minor behavioral changes or changes to network formats used only by the AMPS server (such as replication). | Megacert
`PREVIEW` | Increments for previews of new features. May introduce behavioral changes to fix incorrect behavior, enable new functionality or to enhance performance. May include internal enhancements that do not introduce behavioral changes. | Kilocert
`HOTFIX` | A release for a critical defect impacting a customer. A hotfix release is designed to be 100% compatible with the release it fixes (that is, a release with the same MAJOR.MINOR.PREVIEW version). May introduce behavioral changes to fix incorrect behavior. May document previously undocumented features or extend surface area to improve usability for existing features. | Cert
`TIMESTAMP` | Proprietary build timestamp. | (does not affect verification level)
`TAG` | Identifier that corresponds to precise code used in the release. | (does not affect verification level)

The certification levels are defined in the following table. Notice that, in all cases, 60East will certify at a higher level if time permits or if a change involves a critical part of AMPS (such as replication or internal utility classes that are widely used).

Certification level definitions
Certification Level | Description | Time to Certify
--- | --- | ---
Megacert | Performance and long-haul testing. Full regression suite and stress-testing suite, including replication testing and application scenario tests. Full unit testing suite, including new unit tests to verify correct behavior of bugfixes in this release. | less than 2 weeks
Kilocert | Full regression suite and stress-testing suite, including replication testing and application scenario tests. Full unit testing suite, including new unit tests to verify correct behavior of bugfixes in this release. | less than 1 week
Cert | Full unit testing suite, including new unit tests to verify correct behavior of bugfixes in this release. Replication testing suite if release affects replication code. | 4 hours

### Contacting 60East Technologies Support

Please contact 60East Technologies Support Services according to the terms of your 60East Technologies License Agreement.

Support is offered through the United States:

Web: | http://www.crankuptheamps.com
--- | ---
E-Mail: | sales@crankuptheamps.com
Support: | http://support.crankuptheamps.com

Other support options (such as support via phone), may be available depending on the terms of your support agreement.