Class AMQPLargeMessage

All Implemented Interfaces:
Message, org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage, org.apache.activemq.artemis.core.server.LargeServerMessage

public class AMQPLargeMessage extends AMQPMessage implements org.apache.activemq.artemis.core.server.LargeServerMessage
  • Constructor Details

    • AMQPLargeMessage

      public AMQPLargeMessage(long id, long messageFormat, org.apache.activemq.artemis.utils.collections.TypedProperties extraProperties, org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools coreMessageObjectPools, org.apache.activemq.artemis.core.persistence.StorageManager storageManager)
    • AMQPLargeMessage

      public AMQPLargeMessage(long id, long messageFormat, org.apache.activemq.artemis.utils.collections.TypedProperties extraProperties, org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools coreMessageObjectPools, org.apache.activemq.artemis.core.persistence.StorageManager storageManager, org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody largeBody)
  • Method Details

    • toCore

      public ICoreMessage toCore(org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools coreMessageObjectPools)
      Specified by:
      toCore in interface Message
      Overrides:
      toCore in class AMQPMessage
    • getMessage

      public Message getMessage()
      Specified by:
      getMessage in interface org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
    • releaseEncodedBuffer

      public void releaseEncodedBuffer()
    • releaseEncodedBufferAfterWrite

      public void releaseEncodedBufferAfterWrite()
      getSavedEncodeBuffer() will retain two counters from the buffer, one meant for the call, and one that must be released only after encoding.

      This method is meant to be called when the buffer is actually encoded on the journal, meaning both refs are gone. and the actual buffer can be released.

    • checkReference

      public void checkReference(org.apache.activemq.artemis.core.server.MessageReference reference)
      This method check the reference for specifics on protocolData. It was written to check the deliveryAnnotationsForSendBuffer and eventually move it to the protocolData.
    • getPositionAfterDeliveryAnnotations

      public int getPositionAfterDeliveryAnnotations()
      during large message deliver, we need this calculation to place a new delivery annotation
    • inspectTemporaryBuffer

      public io.netty.buffer.ByteBuf inspectTemporaryBuffer()
      This is used on test assertions to make sure the buffers are released corrected
    • getSavedEncodeBuffer

      public io.netty.buffer.ByteBuf getSavedEncodeBuffer()
    • readSavedEncoding

      protected void readSavedEncoding(io.netty.buffer.ByteBuf buf)
    • setFileDurable

      public void setFileDurable(boolean value)
    • getStorageManager

      public org.apache.activemq.artemis.core.persistence.StorageManager getStorageManager()
      Specified by:
      getStorageManager in interface org.apache.activemq.artemis.core.server.LargeServerMessage
    • setStorageManager

      public void setStorageManager(org.apache.activemq.artemis.core.persistence.StorageManager storageManager)
      Specified by:
      setStorageManager in interface org.apache.activemq.artemis.core.server.LargeServerMessage
    • isDurable

      public final boolean isDurable()
      Specified by:
      isDurable in interface Message
      Overrides:
      isDurable in class AMQPMessage
    • getData

      public org.apache.qpid.proton.codec.ReadableBuffer getData()
      Specified by:
      getData in class AMQPMessage
    • parseHeader

      public void parseHeader(org.apache.qpid.proton.codec.ReadableBuffer buffer)
    • addBytes

      public void addBytes(org.apache.qpid.proton.codec.ReadableBuffer data) throws Exception
      Throws:
      Exception
    • parseLargeMessage

      protected void parseLargeMessage(ActiveMQBuffer data, boolean initialHeader)
    • parseLargeMessage

      protected void parseLargeMessage(byte[] data, boolean initialHeader)
    • parseLargeMessage

      protected void parseLargeMessage(org.apache.qpid.proton.codec.ReadableBuffer data)
    • toMessage

      public Message toMessage()
      Specified by:
      toMessage in interface org.apache.activemq.artemis.core.server.LargeServerMessage
    • addBytes

      public void addBytes(byte[] bytes) throws Exception
      Specified by:
      addBytes in interface org.apache.activemq.artemis.core.server.LargeServerMessage
      Specified by:
      addBytes in interface org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
      Throws:
      Exception
    • addBytes

      public void addBytes(ActiveMQBuffer bytes, boolean initialHeader) throws Exception
      Specified by:
      addBytes in interface org.apache.activemq.artemis.core.server.LargeServerMessage
      Throws:
      Exception
    • setPaged

      public void setPaged()
      Specified by:
      setPaged in interface org.apache.activemq.artemis.core.server.LargeServerMessage
      Specified by:
      setPaged in interface Message
      Overrides:
      setPaged in class AMQPMessage
    • releaseResources

      public void releaseResources(boolean sync, boolean sendEvent)
      Specified by:
      releaseResources in interface org.apache.activemq.artemis.core.server.LargeServerMessage
      Specified by:
      releaseResources in interface org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
    • isOpen

      public boolean isOpen()
      Specified by:
      isOpen in interface org.apache.activemq.artemis.core.server.LargeServerMessage
    • deleteFile

      public void deleteFile() throws Exception
      Specified by:
      deleteFile in interface org.apache.activemq.artemis.core.server.LargeServerMessage
      Specified by:
      deleteFile in interface org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
      Throws:
      Exception
    • getAppendFile

      public SequentialFile getAppendFile() throws ActiveMQException
      Specified by:
      getAppendFile in interface org.apache.activemq.artemis.core.server.LargeServerMessage
      Throws:
      ActiveMQException
    • isLargeMessage

      public boolean isLargeMessage()
      Specified by:
      isLargeMessage in interface Message
    • getLargeBodyReader

      public org.apache.activemq.artemis.core.message.LargeBodyReader getLargeBodyReader()
      Specified by:
      getLargeBodyReader in interface org.apache.activemq.artemis.core.server.LargeServerMessage
    • getLargeBody

      public org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody getLargeBody()
      Specified by:
      getLargeBody in interface org.apache.activemq.artemis.core.server.LargeServerMessage
    • releaseComplete

      protected void releaseComplete()
      Overrides:
      releaseComplete in class RefCountMessage
    • copy

      public Message copy()
      Specified by:
      copy in interface Message
      Specified by:
      copy in class AMQPMessage
    • copy

      public Message copy(long newID)
      Specified by:
      copy in interface Message
    • copy

      public Message copy(long newID, boolean isDLQOrExpiry)
      Specified by:
      copy in interface Message
    • newHeaderWithoutExpiry

      protected io.netty.buffer.ByteBuf newHeaderWithoutExpiry(AtomicInteger placeOutput)
    • messageChanged

      public void messageChanged()
      Specified by:
      messageChanged in interface Message
      Overrides:
      messageChanged in class AMQPMessage
    • getEncodeSize

      public int getEncodeSize()
      Specified by:
      getEncodeSize in interface Message
      Specified by:
      getEncodeSize in class AMQPMessage
    • getWholeMessageSize

      public long getWholeMessageSize()
      Specified by:
      getWholeMessageSize in interface Message
    • getMemoryEstimate

      public int getMemoryEstimate()
      Specified by:
      getMemoryEstimate in interface Message
      Specified by:
      getMemoryEstimate in class AMQPMessage
    • persist

      public void persist(ActiveMQBuffer targetRecord)
      Specified by:
      persist in interface Message
      Specified by:
      persist in class AMQPMessage
    • getPersistSize

      public int getPersistSize()
      Specified by:
      getPersistSize in interface Message
      Specified by:
      getPersistSize in class AMQPMessage
    • reloadPersistence

      public void reloadPersistence(ActiveMQBuffer record, org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools pools)
      Specified by:
      reloadPersistence in interface Message
      Specified by:
      reloadPersistence in class AMQPMessage
    • getPersistentSize

      public long getPersistentSize()
      Specified by:
      getPersistentSize in interface Message
      Specified by:
      getPersistentSize in class AMQPMessage
    • getPersister

      public org.apache.activemq.artemis.core.persistence.Persister<Message> getPersister()
      Specified by:
      getPersister in interface Message
      Specified by:
      getPersister in class AMQPMessage
    • reencode

      public void reencode()
      Specified by:
      reencode in interface Message
      Specified by:
      reencode in class AMQPMessage
    • setReencoded

      public void setReencoded(boolean reencoded)
    • isReencoded

      public boolean isReencoded()
    • ensureDataIsValid

      protected void ensureDataIsValid()
      Specified by:
      ensureDataIsValid in class AMQPMessage
    • encodeMessage

      protected void encodeMessage()
      Specified by:
      encodeMessage in class AMQPMessage