Ryan,
Yes and no... Thanks for asking this question.
First, you are correct; NATS streaming subjects are separate from NATS subjects, and a NATS streaming client will not receive core NATS client messages.
Architecturally, it may be helpful to think of NATS streaming as a layer on top core NATS, with the NATS streaming server being a core NATS client under the hood. A NATS streaming server by default runs an embedded NATS core server for ease of use and convenience (although it can be launched stand-alone too). Given this architecture, there is nothing stopping core NATS clients from operating alongside NATS streaming, using the same (embedded) NATS server. When doing this, you'll want to be aware of your subject namespace - if you wildcard subscribe in a core NATS client ">", you'll receive NATS streaming messages that won't be useful to your core NATS client.
In discussing clustering, there are two forms: Core NATS, and NATS streaming. Core NATS clustering is distinct from the upcoming NATS streaming clustering.
- Core NATS clustering exists today, and provides scalability and high availability for all core NATS clients, but does not share any server state.
- NATS streaming clustering work is underway, and will replicate streaming data to provide HA and fault tolerance (beyond the mechanisms we already provide). This is clustering amongst NATS streaming servers, separate from core NATS clustering, and only applies to NATS streaming.
We're aware there is some confusion here and will work to making this clearer in our documentation. Does this help?