Class AMQPLargeMessage
- java.lang.Object
-
- org.apache.activemq.artemis.api.core.RefCountMessage
-
- org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage
-
- org.apache.activemq.artemis.protocol.amqp.broker.AMQPLargeMessage
-
- All Implemented Interfaces:
Message,ReplicatedLargeMessage,LargeServerMessage
public class AMQPLargeMessage extends AMQPMessage implements LargeServerMessage
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage
AMQPMessage.MessageDataScanningStatus
-
-
Field Summary
-
Fields inherited from class org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage
address, ADDRESS_PROPERTY, applicationProperties, applicationPropertiesPosition, connectionID, coreMessageObjectPools, DEFAULT_MESSAGE_FORMAT, DEFAULT_MESSAGE_PRIORITY, deliveryAnnotations, deliveryAnnotationsForSendBuffer, deliveryAnnotationsPosition, encodedDeliveryAnnotationsSize, encodedHeaderSize, expiration, expirationReload, extraProperties, header, headerPosition, logger, MAX_MESSAGE_PRIORITY, memoryEstimate, messageAnnotations, messageAnnotationsPosition, messageDataScanned, messageFormat, messageID, modified, properties, propertiesPosition, rejectedConsumers, remainingBodyPosition, scheduledTime, VALUE_NOT_PRESENT
-
Fields inherited from interface org.apache.activemq.artemis.api.core.Message
BYTES_TYPE, DEFAULT_TYPE, EMBEDDED_TYPE, HDR_ACTUAL_EXPIRY_TIME, HDR_BRIDGE_DUPLICATE_ID, HDR_CONTENT_TYPE, HDR_DUPLICATE_DETECTION_ID, HDR_GROUP_ID, HDR_GROUP_SEQUENCE, HDR_INGRESS_TIMESTAMP, HDR_LARGE_BODY_SIZE, HDR_LARGE_COMPRESSED, HDR_LAST_VALUE_NAME, HDR_ORIG_MESSAGE_ID, HDR_ORIG_ROUTING_TYPE, HDR_ORIGINAL_ADDRESS, HDR_ORIGINAL_QUEUE, HDR_PREFIX, HDR_ROUTE_TO_ACK_IDS, HDR_ROUTE_TO_IDS, HDR_ROUTING_TYPE, HDR_SCALEDOWN_TO_IDS, HDR_SCHEDULED_DELIVERY_TIME, HDR_VALIDATED_USER, INTERNAL_PROPERTY_NAMES_PREDICATE, LARGE_EMBEDDED_TYPE, MAP_TYPE, memoryOffset, OBJECT_TYPE, STREAM_TYPE, TEXT_TYPE
-
-
Constructor Summary
Constructors Constructor Description AMQPLargeMessage(long id, long messageFormat, TypedProperties extraProperties, CoreMessageObjectPools coreMessageObjectPools, StorageManager storageManager)AMQPLargeMessage(long id, long messageFormat, TypedProperties extraProperties, CoreMessageObjectPools coreMessageObjectPools, StorageManager storageManager, LargeBody largeBody)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddBytes(byte[] bytes)voidaddBytes(ActiveMQBuffer bytes, boolean initialHeader)voidaddBytes(org.apache.qpid.proton.codec.ReadableBuffer data)voidcheckReference(MessageReference reference)This method check the reference for specifics on protocolData.voidclearPendingRecordID()Messagecopy()Messagecopy(long newID)Messagecopy(long newID, boolean isDLQOrExpiry)voiddeleteFile()protected voidencodeMessage()protected voidensureDataIsValid()SequentialFilegetAppendFile()org.apache.qpid.proton.codec.ReadableBuffergetData()intgetEncodeSize()LargeBodygetLargeBody()LargeBodyReadergetLargeBodyReader()intgetMemoryEstimate()longgetPendingRecordID()longgetPersistentSize()Persister<Message>getPersister()intgetPersistSize()intgetPositionAfterDeliveryAnnotations()during large message deliver, we need this calculation to place a new delivery annotationio.netty.buffer.ByteBufgetSavedEncodeBuffer()StorageManagergetStorageManager()longgetWholeMessageSize()booleanhasPendingRecord()io.netty.buffer.ByteBufinspectTemporaryBuffer()This is used on test assertions to make sure the buffers are released correctedbooleanisDurable()booleanisLargeMessage()booleanisReencoded()voidmessageChanged()protected io.netty.buffer.ByteBufnewHeaderWithoutExpiry(AtomicInteger placeOutput)voidparseHeader(org.apache.qpid.proton.codec.ReadableBuffer buffer)protected voidparseLargeMessage(byte[] data, boolean initialHeader)protected voidparseLargeMessage(ActiveMQBuffer data, boolean initialHeader)protected voidparseLargeMessage(org.apache.qpid.proton.codec.ReadableBuffer data)voidpersist(ActiveMQBuffer targetRecord)protected voidreadSavedEncoding(io.netty.buffer.ByteBuf buf)voidreencode()voidreferenceOriginalMessage(Message original, SimpleString originalQueue)protected voidreleaseComplete()voidreleaseEncodedBuffer()voidreleaseEncodedBufferAfterWrite()getSavedEncodeBuffer()will retain two counters from the buffer, one meant for the call, and one that must be released only after encoding.voidreleaseResources(boolean sync, boolean sendEvent)voidreloadPersistence(ActiveMQBuffer record, CoreMessageObjectPools pools)voidsetFileDurable(boolean value)voidsetPaged()voidsetPendingRecordID(long pendingRecordID)voidsetReencoded(boolean reencoded)voidsetStorageManager(StorageManager storageManager)ICoreMessagetoCore(CoreMessageObjectPools coreMessageObjectPools)MessagetoMessage()voidvalidateFile()-
Methods inherited from class org.apache.activemq.artemis.protocol.amqp.broker.AMQPMessage
acceptsConsumer, addAnnotationsAsProperties, cachedAddressSimpleString, clearInternalProperties, containsProperty, containsProperty, createDeliveryCopy, createExtraProperties, ensureMessageDataScanned, ensureScanning, getAddress, getAddressSimpleString, getAMQPUserID, getAnnotation, getApplicationProperties, getApplicationPropertiesMap, getBody, getBooleanProperty, getBooleanProperty, getBrokerProperty, getByteProperty, getByteProperty, getBytesProperty, getBytesProperty, getConnectionID, getCorrelationID, getDataScanningStatus, getDecodedApplicationProperties, getDecodedMessageAnnotations, getDeliveryAnnotations, getDeliveryAnnotationsForSendBufferSize, getDoubleProperty, getDoubleProperty, getDuplicateProperty, getEstimateSavedEncode, getExpiration, getExtraBytesProperty, getExtraProperties, getFloatProperty, getFloatProperty, getFooter, getGroupID, getGroupSequence, getHeader, getIngressTimestamp, getIntProperty, getIntProperty, getLastValueProperty, getLongProperty, getLongProperty, getMessageAnnotation, getMessageAnnotation, getMessageAnnotations, getMessageAnnotationsMap, getMessageFormat, getMessageID, getObjectProperty, getObjectProperty, getObjectPropertyForFilter, getOwner, getPriority, getProperties, getPropertyKeysPool, getPropertyNames, getPropertyValuesPool, getProtocolName, getProtonMessage, getReplyTo, getRoutingType, getScheduledDeliveryTime, getSendBuffer, getShortProperty, getShortProperty, getSimpleStringProperty, getSimpleStringProperty, getStringProperty, getStringProperty, getTimestamp, getUserID, hasScheduledDeliveryTime, internalPersistSize, lazyDecodeApplicationProperties, lazyDecodeApplicationProperties, lazyScanAfterReloadPersistence, putBooleanProperty, putBooleanProperty, putByteProperty, putByteProperty, putBytesProperty, putBytesProperty, putCharProperty, putCharProperty, putDoubleProperty, putDoubleProperty, putExtraBytesProperty, putFloatProperty, putFloatProperty, putIntProperty, putIntProperty, putLongProperty, putLongProperty, putObjectProperty, putObjectProperty, putShortProperty, putShortProperty, putStringProperty, putStringProperty, putStringProperty, receiveBuffer, rejectConsumer, reloadExpiration, removeAnnotation, removeExtraBytesProperty, removeMessageAnnotation, removeProperty, removeProperty, resetMessageData, scanForMessageSection, scanForMessageSection, scanMessageData, scanMessageData, sendBuffer, setAddress, setAddress, setAnnotation, setBrokerProperty, setConnectionID, setCorrelationID, setDeliveryAnnotationsForSendBuffer, setDurable, setExpiration, setExtraProperties, setIngressTimestamp, setLastValueProperty, setMessageAnnotation, setMessageAnnotation, setMessageAnnotations, setMessageID, setOwner, setPriority, setReplyTo, setRoutingType, setScheduledDeliveryTime, setTimestamp, setUserID, toCompositeData, toCore, toDebugString, toPropertyMap, toString, unmarshalledApplicationPropertiesMemoryEstimateFromData, writeDeliveryAnnotationsForSendBuffer
-
Methods inherited from class org.apache.activemq.artemis.api.core.RefCountMessage
debugRefs, debugString, durableDown, durableUp, getDurableCount, getParentRef, getRefCount, getUsage, getUserContext, refDown, refUp, setParentRef, setUserContext, usageDown, usageUp
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.activemq.artemis.core.server.LargeServerMessage
addBytes, getMessageID
-
Methods inherited from interface org.apache.activemq.artemis.api.core.Message
durableDown, durableUp, getAnnotationString, getBodyBuffer, getBodyInputStream, getDuplicateIDBytes, getDurableCount, getRefCount, getStringBody, getType, getUsage, getUserContext, getValidatedUserID, isExpired, refDown, refUp, setGroupID, setGroupID, setGroupSequence, setType, setUserContext, setValidatedUserID, toMap, toMap, toPropertyMap, usageDown, usageUp
-
Methods inherited from interface org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
setDurable, setMessageID
-
-
-
-
Constructor Detail
-
AMQPLargeMessage
public AMQPLargeMessage(long id, long messageFormat, TypedProperties extraProperties, CoreMessageObjectPools coreMessageObjectPools, StorageManager storageManager)
-
AMQPLargeMessage
public AMQPLargeMessage(long id, long messageFormat, TypedProperties extraProperties, CoreMessageObjectPools coreMessageObjectPools, StorageManager storageManager, LargeBody largeBody)
-
-
Method Detail
-
toCore
public ICoreMessage toCore(CoreMessageObjectPools coreMessageObjectPools)
- Specified by:
toCorein interfaceMessage- Overrides:
toCorein classAMQPMessage
-
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(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)
-
validateFile
public void validateFile() throws ActiveMQException- Specified by:
validateFilein interfaceLargeServerMessage- Throws:
ActiveMQException
-
setFileDurable
public void setFileDurable(boolean value)
-
getStorageManager
public StorageManager getStorageManager()
- Specified by:
getStorageManagerin interfaceLargeServerMessage
-
setStorageManager
public void setStorageManager(StorageManager storageManager)
- Specified by:
setStorageManagerin interfaceLargeServerMessage
-
isDurable
public final boolean isDurable()
- Specified by:
isDurablein interfaceMessage- Overrides:
isDurablein classAMQPMessage
-
getData
public org.apache.qpid.proton.codec.ReadableBuffer getData()
- Specified by:
getDatain classAMQPMessage
-
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:
toMessagein interfaceLargeServerMessage
-
addBytes
public void addBytes(byte[] bytes) throws Exception- Specified by:
addBytesin interfaceLargeServerMessage- Specified by:
addBytesin interfaceReplicatedLargeMessage- Throws:
Exception
-
addBytes
public void addBytes(ActiveMQBuffer bytes, boolean initialHeader) throws Exception
- Specified by:
addBytesin interfaceLargeServerMessage- Throws:
Exception
-
setPaged
public void setPaged()
- Specified by:
setPagedin interfaceLargeServerMessage
-
releaseResources
public void releaseResources(boolean sync, boolean sendEvent)- Specified by:
releaseResourcesin interfaceLargeServerMessage- Specified by:
releaseResourcesin interfaceReplicatedLargeMessage
-
deleteFile
public void deleteFile() throws Exception- Specified by:
deleteFilein interfaceLargeServerMessage- Specified by:
deleteFilein interfaceReplicatedLargeMessage- Throws:
Exception
-
getAppendFile
public SequentialFile getAppendFile() throws ActiveMQException
- Specified by:
getAppendFilein interfaceLargeServerMessage- Throws:
ActiveMQException
-
isLargeMessage
public boolean isLargeMessage()
- Specified by:
isLargeMessagein interfaceMessage
-
getLargeBodyReader
public LargeBodyReader getLargeBodyReader()
- Specified by:
getLargeBodyReaderin interfaceLargeServerMessage
-
getLargeBody
public LargeBody getLargeBody()
- Specified by:
getLargeBodyin interfaceLargeServerMessage
-
clearPendingRecordID
public void clearPendingRecordID()
- Specified by:
clearPendingRecordIDin interfaceReplicatedLargeMessage
-
hasPendingRecord
public boolean hasPendingRecord()
- Specified by:
hasPendingRecordin interfaceReplicatedLargeMessage
-
setPendingRecordID
public void setPendingRecordID(long pendingRecordID)
- Specified by:
setPendingRecordIDin interfaceReplicatedLargeMessage
-
getPendingRecordID
public long getPendingRecordID()
- Specified by:
getPendingRecordIDin interfaceReplicatedLargeMessage
-
releaseComplete
protected void releaseComplete()
- Overrides:
releaseCompletein classRefCountMessage
-
copy
public Message copy()
- Specified by:
copyin interfaceMessage- Specified by:
copyin classAMQPMessage
-
copy
public Message copy(long newID, boolean isDLQOrExpiry)
-
newHeaderWithoutExpiry
protected io.netty.buffer.ByteBuf newHeaderWithoutExpiry(AtomicInteger placeOutput)
-
messageChanged
public void messageChanged()
- Specified by:
messageChangedin interfaceMessage- Overrides:
messageChangedin classAMQPMessage
-
getEncodeSize
public int getEncodeSize()
- Specified by:
getEncodeSizein interfaceMessage- Specified by:
getEncodeSizein classAMQPMessage
-
getWholeMessageSize
public long getWholeMessageSize()
- Specified by:
getWholeMessageSizein interfaceMessage
-
getMemoryEstimate
public int getMemoryEstimate()
- Specified by:
getMemoryEstimatein interfaceMessage- Specified by:
getMemoryEstimatein classAMQPMessage
-
persist
public void persist(ActiveMQBuffer targetRecord)
- Specified by:
persistin interfaceMessage- Specified by:
persistin classAMQPMessage
-
getPersistSize
public int getPersistSize()
- Specified by:
getPersistSizein interfaceMessage- Specified by:
getPersistSizein classAMQPMessage
-
reloadPersistence
public void reloadPersistence(ActiveMQBuffer record, CoreMessageObjectPools pools)
- Specified by:
reloadPersistencein interfaceMessage- Specified by:
reloadPersistencein classAMQPMessage
-
getPersistentSize
public long getPersistentSize()
- Specified by:
getPersistentSizein interfaceMessage- Specified by:
getPersistentSizein classAMQPMessage
-
getPersister
public Persister<Message> getPersister()
- Specified by:
getPersisterin interfaceMessage- Specified by:
getPersisterin classAMQPMessage
-
reencode
public void reencode()
- Specified by:
reencodein interfaceMessage- Specified by:
reencodein classAMQPMessage
-
setReencoded
public void setReencoded(boolean reencoded)
-
isReencoded
public boolean isReencoded()
-
ensureDataIsValid
protected void ensureDataIsValid()
- Specified by:
ensureDataIsValidin classAMQPMessage
-
encodeMessage
protected void encodeMessage()
- Specified by:
encodeMessagein classAMQPMessage
-
referenceOriginalMessage
public void referenceOriginalMessage(Message original, SimpleString originalQueue)
- Specified by:
referenceOriginalMessagein interfaceMessage
-
-