Skip to content
No description or website provided.
Java Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Nuke - The Fast ATOM Bus

Deprecation Notice: Please note that this project has been deprecated

Current version: 1.1.16
Latest RPM: Nuke Fallout 1.1.16 RPM

What is it?

Nuke is a collection of utilities built on a simple, fast ATOM implementation that aims for a minimal dependency footprint.

The ATOM Implementation

The ATOM implementation within in Nuke has its own model that utilizes a SAX parser and StAX writer for serialization and deserialization. The model interfaces are immutable for simplicity and with the model itself emphasizing memory efficiency.


Nuke also contains a runtime container called Fallout to host packages that contain the ATOM bus components.

Fallout is a polling bus based off of an multi-core event dispatch kernel. The dispatch is backed by an generic execution pool. Fallout, by default, will attempt to take advantage of all available processors.

The Nuke kernel supports polling granularity as grainular as the underlying JVM implementation's timer.

For more information see the Nuke kernel and the Nuke kernel run delegate.

How do I use it?

Maven Repository


    <name>Rackspace Research Releases</name>

Installing and Configuring Fallout

Fallout Directories

Fallout directories are configured via setting environment variables. See the Fallout run script for more information.

Environment Variable NameUsageDefault
NUKE_HOMENuke home directory. Only setting this utilizes the defaults for all other environment variables.~/.nuke
NUKE_LIB_DIRDirectory to load packages from.${NUKE_HOME}/lib
NUKE_CFG_DIRDefault directory for configurations without absolute paths.${NUKE_HOME}/etc
NUKE_DEPLOY_DIRDirectory to deploy packages to.${NUKE_HOME}/deployed

Using the Fallout RPM

The Fallout RPM provides the default set of services as a collection of package along with the Fallout libraries necessarry.

The latest RPM may be downloaded at: Nuke Fallout 1.1.16 RPM

rpm -ivh nuke-fallout-1.1.16.rpm

Interacting with the Fallout CLI

Fallout is a persistent actor, source-sink bus, designed to be explicitly simple.

Adding an Actor

An actor is one of either interfaces, an ATOM source or an ATOM sink.

Actors may be defined as one of three languages: javascript, java or python.

fallout actors add http-in-1 java org.atomnuke.http.HttpSource
fallout actors add id-echo java org.atomnuke.utilities.sinks.JavaIdEchoSink

The actor may have some simple parameters set on it as well.

fallout params http-in-1 set debug true

Making an Actor a Polling Target

An actor that implements the ATOMSource interface may be treated as a polling target. The polling interval may be configured anywhere from nanoseconds (JVM implementation dependent) to days.

# Poll the HTTP source every 10 milliseconds; a max of 100 events per second
fallout sources add http-in-1 10 milliseconds

Binding a Source to a Sink Actor

An actor that implements the ATOMSink interface may be bound to any number of configured sources. Once bound, the sink actor will receive events emitted by the source actors.

# Bind the ID echo sink to the HTTP source to emit the ID of any events published to the HTTP endpoint
fallout bindings add http-in-1 id-echo

Starting Fallout

Once the configuration has been completed, you can start Fallout!

fallout server start

Other Fallout CLI Commands

Listing Configuration Elements

fallout actors
fallout sources
fallout params <actor-id>
fallout bindings

Removing Configuration Elements

fallout actors rm <actor-id>
fallout sources rm <actor-id>
fallout params <actor-id> rm <param-name>
fallout bindings rm <binding-id>

As a Feed Crawler

By default Nuke comes with an ATOM Source that is useful for crawling feeds. The crawler is designed specifically to work with AtomHopper.

For more information, please see the nuke feed crawler source README.

Other Java Code Exmaples

Model Features Missing

  • Extensible elements - Internal elements are currently treated as text content.

Release Notes

That Legal Thing...

This software library is released to you under the Apache License, Version 2.0. See LICENSE for more information.

Something went wrong with that request. Please try again.