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, 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
-
Nested Class Summary
Nested classes/interfaces inherited from class AMQPMessage
AMQPMessage.MessageDataScanningStatus -
Field Summary
Fields inherited from class AMQPMessage
address, ADDRESS_PROPERTY, applicationProperties, applicationPropertiesPosition, connectionID, coreMessageObjectPools, DEFAULT_MESSAGE_FORMAT, DEFAULT_MESSAGE_PRIORITY, deliveryAnnotations, deliveryAnnotationsForSendBuffer, deliveryAnnotationsPosition, encodedDeliveryAnnotationsSize, encodedHeaderSize, expiration, expirationReload, extraProperties, header, headerPosition, isPaged, logger, MAX_MESSAGE_PRIORITY, memoryEstimate, messageAnnotations, messageAnnotationsPosition, messageDataScanned, messageFormat, messageID, modified, originalEstimate, priority, properties, propertiesPosition, rejectedConsumers, remainingBodyPosition, routed, scheduledTime, VALUE_NOT_PRESENTFields inherited from interface Message
AMQP_PROPERTY_PREDICATE, 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, PREFIX_AMQP_ANNOTATIONS, STREAM_TYPE, TEXT_TYPE -
Constructor Summary
ConstructorsConstructorDescriptionAMQPLargeMessage(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(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 Summary
Modifier and TypeMethodDescriptionvoidaddBytes(byte[] bytes) voidaddBytes(ActiveMQBuffer bytes, boolean initialHeader) voidaddBytes(org.apache.qpid.proton.codec.ReadableBuffer data) voidcheckReference(org.apache.activemq.artemis.core.server.MessageReference reference) This method check the reference for specifics on protocolData.copy()copy(long newID) copy(long newID, boolean isDLQOrExpiry) voidprotected voidprotected voidorg.apache.qpid.proton.codec.ReadableBuffergetData()intorg.apache.activemq.artemis.core.persistence.impl.journal.LargeBodyorg.apache.activemq.artemis.core.message.LargeBodyReaderintlongorg.apache.activemq.artemis.core.persistence.Persister<Message> intintduring large message deliver, we need this calculation to place a new delivery annotationio.netty.buffer.ByteBuforg.apache.activemq.artemis.core.persistence.StorageManagerlongio.netty.buffer.ByteBufThis is used on test assertions to make sure the buffers are released correctedfinal booleanbooleanbooleanisOpen()booleanvoidprotected 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()protected voidvoidvoidgetSavedEncodeBuffer()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, org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools pools) voidsetFileDurable(boolean value) voidsetPaged()voidsetReencoded(boolean reencoded) voidsetStorageManager(org.apache.activemq.artemis.core.persistence.StorageManager storageManager) toCore(org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools coreMessageObjectPools) Methods inherited from class 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, getOriginalEstimate, getOwner, getPriority, getProperties, getPropertyKeysPool, getPropertyNames, getPropertyValuesPool, getProtocolName, getProtonMessage, getReplyTo, getRoutingType, getScheduledDeliveryTime, getSendBuffer, getShortProperty, getShortProperty, getSimpleStringProperty, getSimpleStringProperty, getStringProperty, getStringProperty, getSubject, getTimestamp, getUserID, hasScheduledDeliveryTime, internalPersistSize, isPaged, 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, routed, 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, writeDeliveryAnnotationsForSendBufferMethods inherited from class RefCountMessage
counterString, debugLocations, deferredDebug, deferredDebug, deferredDebug, disableErrorCheck, durableDown, durableUp, getDurableCount, getParentRef, getRefCount, getUsage, getUserContext, isRefDebugEnabled, isRefTraceEnabled, isReleased, onDown, onUp, refDown, refUp, registerDebug, released, setParentRef, setUserContext, usageDown, usageUpMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.activemq.artemis.core.server.LargeServerMessage
addBytes, getMessageIDMethods inherited from interface Message
clearAMQPProperties, durableDown, durableUp, getAnnotationString, getBodyBuffer, getBodyInputStream, getDuplicateIDBytes, getDurableCount, getRefCount, getStringBody, getType, getUsage, getUserContext, getValidatedUserID, isExpired, refDown, referenceOriginalMessage, refUp, setGroupID, setGroupID, setGroupSequence, setType, setUserContext, setValidatedUserID, toMap, toMap, toPropertyMap, usageDown, usageUpMethods inherited from interface org.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
setDurable, setMessageID
-
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:
toCorein interfaceMessage- Overrides:
toCorein classAMQPMessage
-
getMessage
- Specified by:
getMessagein interfaceorg.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:
getStorageManagerin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage
-
setStorageManager
public void setStorageManager(org.apache.activemq.artemis.core.persistence.StorageManager storageManager) - Specified by:
setStorageManagerin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage
-
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
-
parseLargeMessage
-
parseLargeMessage
protected void parseLargeMessage(byte[] data, boolean initialHeader) -
parseLargeMessage
protected void parseLargeMessage(org.apache.qpid.proton.codec.ReadableBuffer data) -
toMessage
- Specified by:
toMessagein interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage
-
addBytes
-
addBytes
- Specified by:
addBytesin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage- Throws:
Exception
-
setPaged
public void setPaged()- Specified by:
setPagedin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage- Specified by:
setPagedin interfaceMessage- Overrides:
setPagedin classAMQPMessage
-
releaseResources
public void releaseResources(boolean sync, boolean sendEvent) - Specified by:
releaseResourcesin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage- Specified by:
releaseResourcesin interfaceorg.apache.activemq.artemis.core.replication.ReplicatedLargeMessage
-
isOpen
public boolean isOpen()- Specified by:
isOpenin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage
-
deleteFile
-
getAppendFile
- Specified by:
getAppendFilein interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage- Throws:
ActiveMQException
-
isLargeMessage
public boolean isLargeMessage()- Specified by:
isLargeMessagein interfaceMessage
-
getLargeBodyReader
public org.apache.activemq.artemis.core.message.LargeBodyReader getLargeBodyReader()- Specified by:
getLargeBodyReaderin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage
-
getLargeBody
public org.apache.activemq.artemis.core.persistence.impl.journal.LargeBody getLargeBody()- Specified by:
getLargeBodyin interfaceorg.apache.activemq.artemis.core.server.LargeServerMessage
-
releaseComplete
protected void releaseComplete()- Overrides:
releaseCompletein classRefCountMessage
-
copy
- Specified by:
copyin interfaceMessage- Specified by:
copyin classAMQPMessage
-
copy
-
copy
-
newHeaderWithoutExpiry
-
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
- 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, org.apache.activemq.artemis.core.persistence.CoreMessageObjectPools pools) - Specified by:
reloadPersistencein interfaceMessage- Specified by:
reloadPersistencein classAMQPMessage
-
getPersistentSize
public long getPersistentSize()- Specified by:
getPersistentSizein interfaceMessage- Specified by:
getPersistentSizein classAMQPMessage
-
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
-