Class DefaultStompSession
- java.lang.Object
- org.springframework.messaging.simp.stomp.DefaultStompSession
- All Implemented Interfaces:
ConnectionHandlingStompSession,StompSession,TcpConnectionHandler<byte[]>
public class DefaultStompSession extends Object implements ConnectionHandlingStompSession
Default implementation ofConnectionHandlingStompSession.- 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
Fields Modifier and Type Field Description static byte[]EMPTY_PAYLOAD
Constructor Summary
Constructors Constructor Description DefaultStompSession(StompSessionHandler sessionHandler, StompHeaders connectHeaders)Create a new session.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StompSession.Receiptableacknowledge(String messageId, boolean consumed)Send an acknowledgement whether a message was consumed or not resulting in an ACK or NACK frame respectively.voidafterConnected(TcpConnection<byte[]> connection)Invoked after a connection is successfully established.voidafterConnectFailure(Throwable ex)Invoked on failure to connect.voidafterConnectionClosed()Invoked after the connection is closed.voiddisconnect()Disconnect the session by sending a DISCONNECT frame.MessageConvertergetMessageConverter()Return the configuredMessageConverter.longgetReceiptTimeLimit()Return the configured time limit before a receipt expires.ListenableFuture<StompSession>getSessionFuture()Return a future that will complete when the session is ready for use.StompSessionHandlergetSessionHandler()Return the configured session handler.StringgetSessionId()Return the id for the session.TaskSchedulergetTaskScheduler()Return the configured TaskScheduler to use for receipt tracking.voidhandleFailure(Throwable ex)Handle a failure on the connection.voidhandleMessage(Message<byte[]> message)Handle a message received from the remote host.booleanisAutoReceiptEnabled()Whether receipt headers should be automatically added.booleanisConnected()Whether the session is connected.StompSession.Receiptablesend(String destination, Object payload)Send a message to the specified destination, converting the payload to abyte[]with the help of aMessageConverter.StompSession.Receiptablesend(StompHeaders stompHeaders, Object payload)An overloaded version ofStompSession.send(String, Object)with fullStompHeadersinstead of just a destination.voidsetAutoReceipt(boolean autoReceiptEnabled)When enabled, a receipt header is automatically added to futuresendandsubscribeoperations on this session, which causes the server to return a RECEIPT.voidsetMessageConverter(MessageConverter messageConverter)Set theMessageConverterto 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.voidsetReceiptTimeLimit(long receiptTimeLimit)Configure the time in milliseconds before a receipt expires.voidsetTaskScheduler(TaskScheduler taskScheduler)Configure the TaskScheduler to use for receipt tracking.StompSession.Subscriptionsubscribe(String destination, StompFrameHandler handler)Subscribe to the given destination by sending a SUBSCRIBE frame and handle received messages with the specifiedStompFrameHandler.StompSession.Subscriptionsubscribe(StompHeaders stompHeaders, StompFrameHandler handler)An overloaded version ofStompSession.subscribe(String, StompFrameHandler)with fullStompHeadersinstead of just a destination.
Field Detail
EMPTY_PAYLOAD
public static final byte[] EMPTY_PAYLOAD
Constructor Detail
DefaultStompSession
public DefaultStompSession(StompSessionHandler sessionHandler, StompHeaders connectHeaders)
Create a new session.- Parameters:
sessionHandler- the application handler for the sessionconnectHeaders- headers for the STOMP CONNECT frame
Method Detail
getSessionId
public String getSessionId()
Description copied from interface:StompSessionReturn the id for the session.- Specified by:
getSessionIdin interfaceStompSession
getSessionHandler
public StompSessionHandler getSessionHandler()
Return the configured session handler.
getSessionFuture
public ListenableFuture<StompSession> getSessionFuture()
Description copied from interface:ConnectionHandlingStompSessionReturn a future that will complete when the session is ready for use.- Specified by:
getSessionFuturein interfaceConnectionHandlingStompSession
setMessageConverter
public void setMessageConverter(MessageConverter messageConverter)
Set theMessageConverterto 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,
SimpleMessageConverteris configured.- Parameters:
messageConverter- the message converter to use
getMessageConverter
public MessageConverter getMessageConverter()
Return the configuredMessageConverter.
setTaskScheduler
public void setTaskScheduler(TaskScheduler taskScheduler)
Configure the TaskScheduler to use for receipt tracking.
getTaskScheduler
public TaskScheduler 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:StompSessionWhen enabled, a receipt header is automatically added to futuresendandsubscribeoperations on this session, which causes the server to return a RECEIPT. An application can then use theReceiptablereturned from the operation to track the receipt.A receipt header can also be added manually through the overloaded methods that accept
StompHeaders.- Specified by:
setAutoReceiptin interfaceStompSession
isAutoReceiptEnabled
public boolean isAutoReceiptEnabled()
Whether receipt headers should be automatically added.
isConnected
public boolean isConnected()
Description copied from interface:StompSessionWhether the session is connected.- Specified by:
isConnectedin interfaceStompSession
send
public StompSession.Receiptable send(String destination, Object payload)
Description copied from interface:StompSessionSend a message to the specified destination, converting the payload to abyte[]with the help of aMessageConverter.- Specified by:
sendin interfaceStompSession- Parameters:
destination- the destination to send a message topayload- the message payload- Returns:
- a Receiptable for tracking receipts
send
public StompSession.Receiptable send(StompHeaders stompHeaders, Object payload)
Description copied from interface:StompSessionAn overloaded version ofStompSession.send(String, Object)with fullStompHeadersinstead 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:
sendin interfaceStompSession- Parameters:
stompHeaders- the message headerspayload- the message payload- Returns:
- a Receiptable for tracking receipts
subscribe
public StompSession.Subscription subscribe(String destination, StompFrameHandler handler)
Description copied from interface:StompSessionSubscribe to the given destination by sending a SUBSCRIBE frame and handle received messages with the specifiedStompFrameHandler.- Specified by:
subscribein 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
public StompSession.Subscription subscribe(StompHeaders stompHeaders, StompFrameHandler handler)
Description copied from interface:StompSessionAn overloaded version ofStompSession.subscribe(String, StompFrameHandler)with fullStompHeadersinstead of just a destination.- Specified by:
subscribein interfaceStompSession- Parameters:
stompHeaders- the headers for the subscribe message framehandler- the handler for received messages- Returns:
- a handle to use to unsubscribe and/or track receipts
acknowledge
public StompSession.Receiptable acknowledge(String messageId, boolean consumed)
Description copied from interface:StompSessionSend 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
ackheader to "client" or "client-individual" in order ot use this.- Specified by:
acknowledgein interfaceStompSession- Parameters:
messageId- the id of the messageconsumed- whether the message was consumed or not- Returns:
- a Receiptable for tracking receipts
disconnect
public void disconnect()
Description copied from interface:StompSessionDisconnect the session by sending a DISCONNECT frame.- Specified by:
disconnectin interfaceStompSession
afterConnected
public void afterConnected(TcpConnection<byte[]> connection)
Description copied from interface:TcpConnectionHandlerInvoked after a connection is successfully established.- Specified by:
afterConnectedin interfaceTcpConnectionHandler<byte[]>- Parameters:
connection- the connection
afterConnectFailure
public void afterConnectFailure(Throwable ex)
Description copied from interface:TcpConnectionHandlerInvoked on failure to connect.- Specified by:
afterConnectFailurein interfaceTcpConnectionHandler<byte[]>- Parameters:
ex- the exception
handleMessage
public void handleMessage(Message<byte[]> message)
Description copied from interface:TcpConnectionHandlerHandle a message received from the remote host.- Specified by:
handleMessagein interfaceTcpConnectionHandler<byte[]>- Parameters:
message- the message
handleFailure
public void handleFailure(Throwable ex)
Description copied from interface:TcpConnectionHandlerHandle a failure on the connection.- Specified by:
handleFailurein interfaceTcpConnectionHandler<byte[]>- Parameters:
ex- the exception
afterConnectionClosed
public void afterConnectionClosed()
Description copied from interface:TcpConnectionHandlerInvoked after the connection is closed.- Specified by:
afterConnectionClosedin interfaceTcpConnectionHandler<byte[]>