Interface SessionCallback
-
public interface SessionCallback
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
afterDelivery()
This can be used to complete certain operations outside of the lock, like acks or other operations.void
browserFinished(org.apache.activemq.artemis.core.server.ServerConsumer consumer)
Some protocols (Openwire) needs a special message with the browser is finished.default void
close(boolean failed)
void
closed()
void
disconnect(org.apache.activemq.artemis.core.server.ServerConsumer consumerId, String errorMessage)
default org.apache.activemq.artemis.core.transaction.Transaction
getCurrentTransaction()
boolean
hasCredits(org.apache.activemq.artemis.core.server.ServerConsumer consumerID)
This one gives a chance for Proton to have its own flow control.default boolean
hasCredits(org.apache.activemq.artemis.core.server.ServerConsumer consumerID, org.apache.activemq.artemis.core.server.MessageReference ref)
This one includes the MessageReference for protocols like MQTT 5 (which only enforces flow control on durable messages (i.e.boolean
isWritable(ReadyListener callback, Object protocolContext)
int
sendLargeMessage(org.apache.activemq.artemis.core.server.MessageReference ref, org.apache.activemq.artemis.core.server.ServerConsumer consumerID, long bodySize, int deliveryCount)
int
sendLargeMessageContinuation(org.apache.activemq.artemis.core.server.ServerConsumer consumerID, byte[] body, boolean continues, boolean requiresResponse)
int
sendMessage(org.apache.activemq.artemis.core.server.MessageReference ref, org.apache.activemq.artemis.core.server.ServerConsumer consumerID, int deliveryCount)
void
sendProducerCreditsFailMessage(int credits, SimpleString address)
void
sendProducerCreditsMessage(int credits, SimpleString address)
default boolean
supportsDirectDelivery()
A requirement to do direct delivery is: no extra locking required at the protocol layer.boolean
updateDeliveryCountAfterCancel(org.apache.activemq.artemis.core.server.ServerConsumer consumer, org.apache.activemq.artemis.core.server.MessageReference ref, boolean failed)
Use this to updates specifics on the message after a redelivery happened.
-
-
-
Method Detail
-
supportsDirectDelivery
default boolean supportsDirectDelivery()
A requirement to do direct delivery is: no extra locking required at the protocol layer. which cannot be guaranteed at AMQP as proton will need the locking. So, disable this on AMQP or any other protocol requiring extra lock.- Returns:
-
hasCredits
boolean hasCredits(org.apache.activemq.artemis.core.server.ServerConsumer consumerID)
This one gives a chance for Proton to have its own flow control.
-
hasCredits
default boolean hasCredits(org.apache.activemq.artemis.core.server.ServerConsumer consumerID, org.apache.activemq.artemis.core.server.MessageReference ref)
This one includes the MessageReference for protocols like MQTT 5 (which only enforces flow control on durable messages (i.e. QoS 1 & 2))
-
afterDelivery
void afterDelivery() throws Exception
This can be used to complete certain operations outside of the lock, like acks or other operations.- Throws:
Exception
-
updateDeliveryCountAfterCancel
boolean updateDeliveryCountAfterCancel(org.apache.activemq.artemis.core.server.ServerConsumer consumer, org.apache.activemq.artemis.core.server.MessageReference ref, boolean failed)
Use this to updates specifics on the message after a redelivery happened. Return true if there was specific logic applied on the protocol, so the ServerConsumer won't make any adjustments.- Parameters:
consumer
-ref
-failed
-
-
sendProducerCreditsMessage
void sendProducerCreditsMessage(int credits, SimpleString address)
-
sendProducerCreditsFailMessage
void sendProducerCreditsFailMessage(int credits, SimpleString address)
-
sendMessage
int sendMessage(org.apache.activemq.artemis.core.server.MessageReference ref, org.apache.activemq.artemis.core.server.ServerConsumer consumerID, int deliveryCount)
-
sendLargeMessage
int sendLargeMessage(org.apache.activemq.artemis.core.server.MessageReference ref, org.apache.activemq.artemis.core.server.ServerConsumer consumerID, long bodySize, int deliveryCount)
-
sendLargeMessageContinuation
int sendLargeMessageContinuation(org.apache.activemq.artemis.core.server.ServerConsumer consumerID, byte[] body, boolean continues, boolean requiresResponse)
-
closed
void closed()
-
disconnect
void disconnect(org.apache.activemq.artemis.core.server.ServerConsumer consumerId, String errorMessage)
-
isWritable
boolean isWritable(ReadyListener callback, Object protocolContext)
-
browserFinished
void browserFinished(org.apache.activemq.artemis.core.server.ServerConsumer consumer)
Some protocols (Openwire) needs a special message with the browser is finished.
-
close
default void close(boolean failed)
-
getCurrentTransaction
default org.apache.activemq.artemis.core.transaction.Transaction getCurrentTransaction()
-
-