-
Notifications
You must be signed in to change notification settings - Fork 21
Codebase
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.
-
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."
-
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 includeslib-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 includeslib-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