Original server communication - Pyosch/powertac-server GitHub Wiki

Note: as of 7 March 2011, this material is obsolete. We are no longer intending to use Spring Integration.

In support of message-driven interaction, the Power TAC server offers a messaging framework that supports light-weight, event-driven interaction between the different core entitites of Power TAC. As shown in the figure below, two different entitites (called endpoints) are connected via message channels which allow them to exchange messages.

Source: Spring Integration in Action, Manning|align=center

A message is a generic wrapper for any Java object combined with metadata used by the framework while handling that object. It consists of a payload and headers. The payload can be of any type and the headers hold commonly required information such as id, timestamp, correlation id, or return address. In Power TAC, message payloads are either serializable "value" objects from the domain model, or lists of such serializable value objects. A value object is a simple immutable Java Bean that carries data required for some specific interaction between two Power TAC entities (say a broker and a customer). Examples of such value objects are TariffSpecification and CashUpdate.

In the following sections all communication flows defined between brokers and server as well as within the server are described in detail.

For consistency we try to maintain the Naming conventions for communication channels.

Broker to TAC Server Communication

width=700px|align=center

TAC Server to Single Broker Communication

width=700px|align=center

TAC Server to Public Communication

width=700px|align=center

TAC Server internal communication