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_PAYLOADAn 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.StompSession.Receiptableacknowledge(StompHeaders headers, boolean consumed)An overloaded version ofStompSession.acknowledge(String, boolean)with fullStompHeadersinstead of just amessageId.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.voiddisconnect(StompHeaders headers)Variant ofStompSession.disconnect()with headers.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 headers, 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 headers, 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
An 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(@Nullable TaskScheduler taskScheduler)
Configure the TaskScheduler to use for receipt tracking.
getTaskScheduler
@Nullable 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 headers, 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:
headers- 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 headers, StompFrameHandler handler)
Description copied from interface:StompSessionAn overloaded version ofStompSession.subscribe(String, StompFrameHandler)with fullStompHeadersinstead of just a destination.- Specified by:
subscribein 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
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
acknowledge
public StompSession.Receiptable acknowledge(StompHeaders headers, boolean consumed)
Description copied from interface:StompSessionAn overloaded version ofStompSession.acknowledge(String, boolean)with fullStompHeadersinstead of just amessageId.- Specified by:
acknowledgein 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:StompSessionDisconnect the session by sending a DISCONNECT frame.- Specified by:
disconnectin interfaceStompSession
disconnect
public void disconnect(@Nullable StompHeaders headers)
Description copied from interface:StompSessionVariant ofStompSession.disconnect()with headers.- Specified by:
disconnectin interfaceStompSession- Parameters:
headers- the headers for the disconnect message frame
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[]>