Interface SessionCallback


public interface SessionCallback
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    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
     
    void
    disconnect(org.apache.activemq.artemis.core.server.ServerConsumer consumerId, String errorMessage)
     
    default org.apache.activemq.artemis.core.transaction.Transaction
     
    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
     
    void
     
    default boolean
    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 Details

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