INTRODUCTION

From en.wikipedia.org/wiki/Message_queue:

Message queues provide an asynchronous communications protocol,
meaning that the sender and receiver of the message do not need
to interact with the message queue at the same time. Messages
placed onto the queue are stored until the recipient retrieves
them.

What is SOA? What is a distributed object system?

HomeQ is a event-driven messaging application framework. It provides key abstractions commonly used in building distributed computing systems.

INSTALLATION

You’ll need a few gems to start:

sudo gem install eventmachine
sudo gem install statemachine
sudo gem install uuidtools

Highly recommended:

sudo gem install log4r

For debugging:

sudo gem install ruby-debug

USAGE

TODO

  • rollingfileoutputter in logger; custom formatter that uses EM.current_time

  • crib test stuff from sst; rake tasks for db dump, test, etc

  • use include EM::Protocols::LineText2 in CP

  • only one (singleton?) config

  • too many config files????

  • make it easier (methods, sugar) to add config items instead of:

    # Make our config available
    module HomeQ::Base::Commando::InstanceMethods
      config_accessor :queue_retry
      add_command "queue_retry [int]", "Get/set reconnect interval"
    end
    
  • startup hooks, not just the one block; ie before & after queue creation…

  • more hooks/callbacks for Sys as it initializes, then runs

  • SIGHUP log file reopening

  • rework sst changes back into homeq

  • move services subdirs to models

  • standard generators don’t create filenames correctly - needs snake/camel

  • better usage for ./script/generate <foo>

  • rake task to regenerate wire/*

  • top level Rakefile in hq-generated apps

  • better instrumentation, stats

  • automated tests; unit tests w/fixtures

  • ugly topology syntax; WNBI infix notation; use diesel DSL?

  • better decoupling / abstraction between Connection and its children

  • dynamic topology reconfig

  • need to refactor - System shouldn’t have @queues? – delegate to Queue?

  • ./script/generate model should create a migration a la rails