Design Decision: Broker separation¶
Background / Context¶
A decision of whether to extract the Artemis message broker as a separate component has implications for the design of high availability for nodes.
1. No change (leave broker embedded)¶
- Least change
- Means that starting/stopping Corda is tightly coupled to starting/stopping Artemis instances.
- Risks resource leaks from one system component affecting other components.
- Not pluggable if we wish to have an alternative broker.
2. External broker¶
- Separates concerns
- Allows future pluggability and standardisation on AMQP
- Separates life cycles of the components
- Makes Artemis deployment much more out of the box.
- Allows easier tuning of VM resources for Flow processing workloads vs broker type workloads.
- Allows later encrypted version to be an enterprise feature that can interoperate with OS versions.
- More work
- Requires creating a protocol to control external bridge formation.
Recommendation and justification¶
Proceed with Option 2: External broker
The broker should only be separated if required by other features (e.g. the float), otherwise not. (RGB, JC, MH agreed).