Class DefaultStompSession
java.lang.Object
org.springframework.messaging.simp.stomp.DefaultStompSession
- All Implemented Interfaces:
ConnectionHandlingStompSession
,StompSession
,StompTcpConnectionHandler<byte[]>
,TcpConnectionHandler<byte[]>
Default implementation of
ConnectionHandlingStompSession
.- Since:
- 4.2
- Author:
- Rossen Stoyanchev
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.messaging.simp.stomp.StompSession
StompSession.Receiptable, StompSession.Subscription
-
Field Summary
-
Constructor Summary
ConstructorDescriptionDefaultStompSession
(StompSessionHandler sessionHandler, StompHeaders connectHeaders) Create a new session. -
Method Summary
Modifier and TypeMethodDescriptionacknowledge
(String messageId, boolean consumed) Send an acknowledgement whether a message was consumed or not resulting in an ACK or NACK frame respectively.acknowledge
(StompHeaders headers, boolean consumed) An overloaded version ofStompSession.acknowledge(String, boolean)
with fullStompHeaders
instead of just amessageId
.void
afterConnected
(TcpConnection<byte[]> connection) Invoked after a connection is successfully established.void
Invoked on failure to connect.void
Invoked after the connection is closed.void
Disconnect the session by sending a DISCONNECT frame.void
disconnect
(StompHeaders headers) Variant ofStompSession.disconnect()
with headers.Return the headers that will be sent in the STOMP CONNECT frame.Return the configuredMessageConverter
.long
Return the configured time limit before a receipt expires.Return a future that will complete when the session is ready for use.Return the configured session handler.Return the id for the session.Return the configured TaskScheduler to use for receipt tracking.void
Handle a failure on the connection.void
handleMessage
(Message<byte[]> message) Handle a message received from the remote host.boolean
Whether receipt headers should be automatically added.boolean
Whether the session is connected.Send a message to the specified destination, converting the payload to abyte[]
with the help of aMessageConverter
.send
(StompHeaders headers, Object payload) An overloaded version ofStompSession.send(String, Object)
with fullStompHeaders
instead of just a destination.void
setAutoReceipt
(boolean autoReceiptEnabled) When enabled, a receipt header is automatically added to futuresend
andsubscribe
operations on this session, which causes the server to return a RECEIPT.void
setMessageConverter
(MessageConverter messageConverter) Set theMessageConverter
to use to convert the payload of incoming and outgoing messages to and frombyte[]
based on object type, or expected object type, and the "content-type" header.void
setReceiptTimeLimit
(long receiptTimeLimit) Configure the time in milliseconds before a receipt expires.void
setTaskScheduler
(TaskScheduler taskScheduler) Configure the TaskScheduler to use for receipt tracking.subscribe
(String destination, StompFrameHandler handler) Subscribe to the given destination by sending a SUBSCRIBE frame and handle received messages with the specifiedStompFrameHandler
.subscribe
(StompHeaders headers, StompFrameHandler handler) An overloaded version ofStompSession.subscribe(String, StompFrameHandler)
with fullStompHeaders
instead of just a destination.
-
Field Details
-
EMPTY_PAYLOAD
public static final byte[] EMPTY_PAYLOADAn empty payload.
-
-
Constructor Details
-
DefaultStompSession
Create a new session.- Parameters:
sessionHandler
- the application handler for the sessionconnectHeaders
- headers for the STOMP CONNECT frame
-
-
Method Details
-
getSessionId
Description copied from interface:StompSession
Return the id for the session.- Specified by:
getSessionId
in interfaceStompSession
- Specified by:
getSessionId
in interfaceStompTcpConnectionHandler<byte[]>
-
getConnectHeaders
Description copied from interface:StompTcpConnectionHandler
Return the headers that will be sent in the STOMP CONNECT frame.- Specified by:
getConnectHeaders
in interfaceStompTcpConnectionHandler<byte[]>
-
getSessionHandler
Return the configured session handler. -
getSessionFuture
Description copied from interface:ConnectionHandlingStompSession
Return a future that will complete when the session is ready for use.- Specified by:
getSessionFuture
in interfaceConnectionHandlingStompSession
-
setMessageConverter
Set theMessageConverter
to use to convert the payload of incoming and outgoing messages to and frombyte[]
based on object type, or expected object type, and the "content-type" header.By default,
SimpleMessageConverter
is configured.- Parameters:
messageConverter
- the message converter to use
-
getMessageConverter
Return the configuredMessageConverter
. -
setTaskScheduler
Configure the TaskScheduler to use for receipt tracking. -
getTaskScheduler
Return the configured TaskScheduler to use for receipt tracking. -
setReceiptTimeLimit
public void setReceiptTimeLimit(long receiptTimeLimit) Configure the time in milliseconds before a receipt expires.By default set to 15,000 (15 seconds).
-
getReceiptTimeLimit
public long getReceiptTimeLimit()Return the configured time limit before a receipt expires. -
setAutoReceipt
public void setAutoReceipt(boolean autoReceiptEnabled) Description copied from interface:StompSession
When enabled, a receipt header is automatically added to futuresend
andsubscribe
operations on this session, which causes the server to return a RECEIPT. An application can then use theReceiptable
returned from the operation to track the receipt.A receipt header can also be added manually through the overloaded methods that accept
StompHeaders
.- Specified by:
setAutoReceipt
in interfaceStompSession
-
isAutoReceiptEnabled
public boolean isAutoReceiptEnabled()Whether receipt headers should be automatically added. -
isConnected
public boolean isConnected()Description copied from interface:StompSession
Whether the session is connected.- Specified by:
isConnected
in interfaceStompSession
-
send
Description copied from interface:StompSession
Send a message to the specified destination, converting the payload to abyte[]
with the help of aMessageConverter
.- Specified by:
send
in interfaceStompSession
- Parameters:
destination
- the destination to send a message topayload
- the message payload- Returns:
- a Receiptable for tracking receipts
-
send
Description copied from interface:StompSession
An overloaded version ofStompSession.send(String, Object)
with fullStompHeaders
instead of just a destination. The headers must contain a destination and may also have other headers such as "content-type" or custom headers for the broker to propagate to subscribers, or broker-specific, non-standard headers.- Specified by:
send
in interfaceStompSession
- Parameters:
headers
- the message headerspayload
- the message payload- Returns:
- a Receiptable for tracking receipts
-
subscribe
Description copied from interface:StompSession
Subscribe to the given destination by sending a SUBSCRIBE frame and handle received messages with the specifiedStompFrameHandler
.- Specified by:
subscribe
in interfaceStompSession
- Parameters:
destination
- the destination to subscribe tohandler
- the handler for received messages- Returns:
- a handle to use to unsubscribe and/or track receipts
-
subscribe
Description copied from interface:StompSession
An overloaded version ofStompSession.subscribe(String, StompFrameHandler)
with fullStompHeaders
instead of just a destination.- Specified by:
subscribe
in interfaceStompSession
- Parameters:
headers
- the headers for the subscribe message framehandler
- the handler for received messages- Returns:
- a handle to use to unsubscribe and/or track receipts
-
acknowledge
Description copied from interface:StompSession
Send an acknowledgement whether a message was consumed or not resulting in an ACK or NACK frame respectively.Note: to use this when subscribing you must set the
ack
header to "client" or "client-individual" in order ot use this.- Specified by:
acknowledge
in interfaceStompSession
- Parameters:
messageId
- the id of the messageconsumed
- whether the message was consumed or not- Returns:
- a Receiptable for tracking receipts
-
acknowledge
Description copied from interface:StompSession
An overloaded version ofStompSession.acknowledge(String, boolean)
with fullStompHeaders
instead of just amessageId
.- Specified by:
acknowledge
in interfaceStompSession
- Parameters:
headers
- the headers for the ACK or NACK message frameconsumed
- whether the message was consumed or not- Returns:
- a Receiptable for tracking receipts
-
disconnect
public void disconnect()Description copied from interface:StompSession
Disconnect the session by sending a DISCONNECT frame.- Specified by:
disconnect
in interfaceStompSession
-
disconnect
Description copied from interface:StompSession
Variant ofStompSession.disconnect()
with headers.- Specified by:
disconnect
in interfaceStompSession
- Parameters:
headers
- the headers for the disconnect message frame
-
afterConnected
Description copied from interface:TcpConnectionHandler
Invoked after a connection is successfully established.- Specified by:
afterConnected
in interfaceTcpConnectionHandler<byte[]>
- Parameters:
connection
- the connection
-
afterConnectFailure
Description copied from interface:TcpConnectionHandler
Invoked on failure to connect.- Specified by:
afterConnectFailure
in interfaceTcpConnectionHandler<byte[]>
- Parameters:
ex
- the exception
-
handleMessage
Description copied from interface:TcpConnectionHandler
Handle a message received from the remote host.- Specified by:
handleMessage
in interfaceTcpConnectionHandler<byte[]>
- Parameters:
message
- the message
-
handleFailure
Description copied from interface:TcpConnectionHandler
Handle a failure on the connection.- Specified by:
handleFailure
in interfaceTcpConnectionHandler<byte[]>
- Parameters:
ex
- the exception
-
afterConnectionClosed
public void afterConnectionClosed()Description copied from interface:TcpConnectionHandler
Invoked after the connection is closed.- Specified by:
afterConnectionClosed
in interfaceTcpConnectionHandler<byte[]>
-