According to the specifications https://stomp.github.io/stomp-specification-1.2.html the client must send and id to the server. The server should respond with this id in the header so that the client can correlate the subscription in the response frames.
SUBSCRIBE id Header
Since a single connection can have multiple open subscriptions with a server, an id header MUST be included in the frame to uniquely identify the subscription. The id header allows the client and server to relate subsequent MESSAGE or UNSUBSCRIBE frames to the original subscription.
Within the same connection, different subscriptions MUST use different subscription identifiers.
@craig8 thanks for reporting the issue. Indeed, it looks like the id header should be present, but only in MESSAGE frame (if sent from server or client) or UNSUBSCRIBE (client only).
According to the specifications https://stomp.github.io/stomp-specification-1.2.html the client must send and id to the server. The server should respond with this id in the header so that the client can correlate the subscription in the response frames.