This document attempts to capture the requirements, use cases and other ideas we have in mind for the improved NMR layer inside ServiceMix.

Requirements

  • Allow for
    • low overhead interaction between endpoints on the same node
    • transparent interaction between endpoint multiple ServiceMix nodes
  • Service Registry
    • API to allow looking up services/endpoints on local node
    • Extensible to allow adding custom (business-oriented) information in it
  • Service Locator
    • Allow delegating service invocations to services on remote nodes
  • Support using distributed transactions (across components and nodes)
    • Using a default transaction manager inside ServiceMix
    • Using a external/remote transaction manager
  • Clustering/clouding
    • State replication
    • Management of cluster nodes

Use cases

  • Use case 1: Loosely coupled Camel routes on the same node
    Camel routes in separate bundles can interact by sending exchanges through the NMR without the overhead of serialization/copying data/...
  • Use case 2: Loosely coupled Camel routes on multiple nodes
    Camel routes on multiple nodes can communicate by sending exchanges through the NMR. The underlying implementation will probably be ActiveMQ.
    (What data types can we support here? XML
  • Use case 3: Seamlessly migrate Camel routes running on the same node to different nodes (i.e. without the calling route having to be aware of the change)

A new name for the NMR

Some suggestions:

  • SGL (ServiceMix Gateway Layer)
  • SML (ServiceMix Messaging Layer
  • EML (Endpoint Messaging Layer)
  • No labels