Forward the given message to the STOMP broker.
The method checks whether we have an active TCP connection and have
received the STOMP CONNECTED frame. For client messages this should be
false only if we lose the TCP connection around the same time when a
client message is being forwarded, so we simply log the ignored message
at debug level. For messages from within the application being sent on
the "system" connection an exception is raised so that components sending
the message have a chance to handle it -- by default the broker message
channel is synchronous.
Note that if messages arrive concurrently around the same time a TCP
connection is lost, there is a brief period of time before the connection
is reset when one or more messages may sneak through and an attempt made
to forward them. Rather than synchronizing to guard against that, this
method simply lets them try and fail. For client sessions that may
result in an additional STOMP ERROR frame(s) being sent downstream but
code handling that downstream should be idempotent in such cases.