Skip to content
jimfcarroll edited this page Aug 10, 2012 · 6 revisions

Developing Applications With Dempsy

Dempsy recognizes three types of developers and the codebase is organized accordingly.

1)"Application developers" are those that are only concerned with building real-time stream based analytics.

  1. However, Dempsy is built on a set of abstractions that allow it to be extended with new transports, routing strategies, monitoring techniques, as well as others. Developers interested in adding new implementations or techniques are "framework developers."

  2. Any developer changing the existing framework or any of the default implementations of the core abstractions are the Dempsy contributors.

The Dempsy codebase is broken into jar artifacts that reflect this understanding of the developer community. These artifacts are served from the Maven Central Repository and so should be accessible to any modern build tool (maven, gradle, ivy). The core codebase is broken into these three layers:

  • The Application Developer Api (lib-dempsyapi). The jar artifact lib-dempsyapi contains all of the annotations, interfaces, exceptions and configuration classes, required for the application developer. To use it your build system should refer to:
            <groupId>net.dempsy</groupId>
            <artifactId>lib-dempsyapi</artifactId>
  • The Dempsy Framework Api (lib-dempsycore). The jar artifact lib-dempsycore contains the the set of core abstractions that Dempsy itself is built on internally. It's meant as an api for those that want to extend the framework itself. For example, if someone doesn't like the current message transport implementations that comes out-of-the-box with Dempsy, they can implement their own and plug it in. This artifact includes lib-dempsyapi as a transitive dependency and to use it your build system should refer to:
            <groupId>net.dempsy</groupId>
            <artifactId>lib-dempsycore</artifactId>
  • The Default Dempsy Implementation (lib-dempsyimpl). The jar artifact lib-dempsyimpl contains the default implementations for the framework Api (from lib-dempsycore) as well as a set of required concrete classes. This artifact includes lib-dempsycore as a transitive dependency and to use it your build system should refer to:
            <groupId>net.dempsy</groupId>
            <artifactId>lib-dempsyimpl</artifactId>

Dempsy also currently includes two runtime libraries that each support the startup and configuration using a particular Dependency Injection container.

  • Spring based startup and configuration (lib-dempsyspring). This library contains the "main" methods for starting Dempsy using Spring. The code here assumes that the ApplicationDefinition will be accessible to the Spring application context. This artifact includes lib-dempsyimpl as a transitive dependency and to use it your build system should refer to:
            <groupId>net.dempsy</groupId>
            <artifactId>lib-dempsyspring</artifactId>
  • Note: The Guice support is currently under construction: Guice based startup and configuration (lib-dempsyguice). This library contains the "main" methods for starting Dempsy using Google Guice. The code here assumes that the ApplicationDefinition will be accessible to the Guice application module. This artifact includes lib-dempsyimpl as a transitive dependency and to use it your build system should refer to:
            <groupId>net.dempsy</groupId>
            <artifactId>lib-dempsyguice</artifactId>

Next section: The Application Developer Api

Clone this wiki locally