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)
      • 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()