Documentation
¶
Index ¶
- type AMQP10
- func (amqp *AMQP10) GetAMQPValue() any
- func (amqp *AMQP10) GetApplicationProperties() map[string]any
- func (amqp *AMQP10) GetData() [][]byte
- func (amqp *AMQP10) GetMessageAnnotations() Annotations
- func (amqp *AMQP10) GetMessageHeader() *MessageHeader
- func (amqp *AMQP10) GetMessageProperties() *MessageProperties
- func (amqp *AMQP10) GetPublishingId() int64
- func (amqp *AMQP10) HasPublishingId() bool
- func (amqp *AMQP10) MarshalBinary() ([]byte, error)
- func (amqp *AMQP10) SetPublishingId(id int64)
- func (amqp *AMQP10) UnmarshalBinary(data []byte) error
- type Annotations
- type ArrayUByte
- type Durability
- type Error
- type ErrorCondition
- type ExpiryPolicy
- type Message
- type MessageHeader
- type MessageProperties
- type ProtoID
- type ReceiverSettleMode
- type SenderSettleMode
- type UUID
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AMQP10 ¶
type AMQP10 struct { Properties *MessageProperties Annotations Annotations ApplicationProperties map[string]any // contains filtered or unexported fields }
AMQP10 is an AMQP 1.0 message with the necessary fields to work with the stream package. This is a wrapper around the amqp.Message struct. AMQP10 is not thread-safe. You should avoid to share the same message between multiple go routines and between multi Send/BatchSend calls. Each Send/BatchSend call should use a new message.
func NewMessage ¶
func (*AMQP10) GetAMQPValue ¶
func (*AMQP10) GetApplicationProperties ¶
func (*AMQP10) GetMessageAnnotations ¶
func (amqp *AMQP10) GetMessageAnnotations() Annotations
func (*AMQP10) GetMessageHeader ¶
func (amqp *AMQP10) GetMessageHeader() *MessageHeader
func (*AMQP10) GetMessageProperties ¶
func (amqp *AMQP10) GetMessageProperties() *MessageProperties
func (*AMQP10) GetPublishingId ¶
func (*AMQP10) HasPublishingId ¶
func (*AMQP10) MarshalBinary ¶
func (*AMQP10) SetPublishingId ¶
func (*AMQP10) UnmarshalBinary ¶
type Annotations ¶
Annotations keys must be of type string, int, or int64.
String keys are encoded as AMQP Symbols.
type ArrayUByte ¶
type ArrayUByte []uint8
ArrayUByte allows encoding []uint8/[]byte as an array rather than binary data.
type Durability ¶
type Durability uint32
Durability specifies the durability of a link.
const ( // No terminus state is retained durably. DurabilityNone Durability = 0 // Only the existence and configuration of the terminus is // retained durably. DurabilityConfiguration Durability = 1 // In addition to the existence and configuration of the // terminus, the unsettled state for durable messages is // retained durably. DurabilityUnsettledState Durability = 2 )
Durability Policies
func (*Durability) String ¶
func (d *Durability) String() string
type Error ¶
type Error struct { // A symbolic value indicating the error condition. Condition ErrorCondition // descriptive text about the error condition // // This text supplies any supplementary details not indicated by the condition field. // This text can be logged as an aid to resolving issues. Description string // map carrying information about the error condition Info map[string]any }
Error is an AMQP error.
type ErrorCondition ¶
type ErrorCondition string
ErrorCondition is one of the error conditions defined in the AMQP spec.
const ( // AMQP Errors ErrorInternalError ErrorCondition = "amqp:internal-error" ErrorNotFound ErrorCondition = "amqp:not-found" ErrorDecodeError ErrorCondition = "amqp:decode-error" ErrorResourceLimitExceeded ErrorCondition = "amqp:resource-limit-exceeded" ErrorNotAllowed ErrorCondition = "amqp:not-allowed" ErrorInvalidField ErrorCondition = "amqp:invalid-field" ErrorNotImplemented ErrorCondition = "amqp:not-implemented" ErrorResourceLocked ErrorCondition = "amqp:resource-locked" ErrorPreconditionFailed ErrorCondition = "amqp:precondition-failed" ErrorResourceDeleted ErrorCondition = "amqp:resource-deleted" ErrorIllegalState ErrorCondition = "amqp:illegal-state" ErrorFrameSizeTooSmall ErrorCondition = "amqp:frame-size-too-small" // Connection Errors ErrorConnectionForced ErrorCondition = "amqp:connection:forced" ErrorFramingError ErrorCondition = "amqp:connection:framing-error" ErrorConnectionRedirect ErrorCondition = "amqp:connection:redirect" // Session Errors ErrorWindowViolation ErrorCondition = "amqp:session:window-violation" ErrorErrantLink ErrorCondition = "amqp:session:errant-link" ErrorHandleInUse ErrorCondition = "amqp:session:handle-in-use" ErrorUnattachedHandle ErrorCondition = "amqp:session:unattached-handle" // Link Errors ErrorDetachForced ErrorCondition = "amqp:link:detach-forced" ErrorTransferLimitExceeded ErrorCondition = "amqp:link:transfer-limit-exceeded" ErrorMessageSizeExceeded ErrorCondition = "amqp:link:message-size-exceeded" ErrorLinkRedirect ErrorCondition = "amqp:link:redirect" ErrorStolen ErrorCondition = "amqp:link:stolen" )
Error Conditions
type ExpiryPolicy ¶
type ExpiryPolicy symbol
ExpiryPolicy specifies when the expiry timer of a terminus starts counting down from the timeout value.
If the link is subsequently re-attached before the terminus is expired, then the count down is aborted. If the conditions for the terminus-expiry-policy are subsequently re-met, the expiry timer restarts from its originally configured timeout value.
const ( // The expiry timer starts when terminus is detached. ExpiryLinkDetach ExpiryPolicy = "link-detach" // The expiry timer starts when the most recently // associated session is ended. ExpirySessionEnd ExpiryPolicy = "session-end" // The expiry timer starts when most recently associated // connection is closed. ExpiryConnectionClose ExpiryPolicy = "connection-close" // The terminus never expires. ExpiryNever ExpiryPolicy = "never" )
Expiry Policies
func (*ExpiryPolicy) String ¶
func (e *ExpiryPolicy) String() string
type Message ¶
type Message struct { // Message format code. // // The upper three octets of a message format code identify a particular message // format. The lowest octet indicates the version of said message format. Any // given version of a format is forwards compatible with all higher versions. Format uint32 // The DeliveryTag can be up to 32 octets of binary data. // Note that when mode one is enabled there will be no delivery tag. DeliveryTag []byte // The header section carries standard delivery details about the transfer // of a message through the AMQP network. Header *MessageHeader // The delivery-annotations section is used for delivery-specific non-standard // properties at the head of the message. Delivery annotations convey information // from the sending peer to the receiving peer. DeliveryAnnotations Annotations // The message-annotations section is used for properties of the message which // are aimed at the infrastructure. Annotations Annotations // The properties section is used for a defined set of standard properties of // the message. Properties *MessageProperties // The application-properties section is a part of the bare message used for // structured application data. Intermediaries can use the data within this // structure for the purposes of filtering or routing. ApplicationProperties map[string]any // Data payloads. Data [][]byte // Value payload. Value any // can only be calculated or evaluated once the whole bare message has been // constructed or seen (for example message hashes, HMACs, signatures and // encryption details). Footer Annotations // Mark the message as settled when LinkSenderSettle is ModeMixed. // // This field is ignored when LinkSenderSettle is not ModeMixed. SendSettled bool }
Message is an AMQP message.
func (*Message) GetData ¶
GetData returns the first []byte from the Data field or nil if Data is empty.
func (*Message) MarshalBinary ¶
MarshalBinary encodes the message into binary form.
func (*Message) UnmarshalBinary ¶
UnmarshalBinary decodes the message from binary form.
type MessageHeader ¶
type MessageHeader struct { Durable bool Priority uint8 TTL time.Duration // from milliseconds FirstAcquirer bool DeliveryCount uint32 }
MessageHeader carries standard delivery details about the transfer of a message.
type MessageProperties ¶
type MessageProperties struct { // Message-id, if set, uniquely identifies a message within the message system. // The message producer is usually responsible for setting the message-id in // such a way that it is assured to be globally unique. A broker MAY discard a // message as a duplicate if the value of the message-id matches that of a // previously received message sent to the same node. MessageID any // uint64, UUID, []byte, or string // The identity of the user responsible for producing the message. // The client sets this value, and it MAY be authenticated by intermediaries. UserID []byte // The to field identifies the node that is the intended destination of the message. // On any given transfer this might not be the node at the receiving end of the link. To string // A common field for summary information about the message content and purpose. Subject string // The address of the node to send replies to. ReplyTo string // This is a client-specific id that can be used to mark or identify messages // between clients. CorrelationID any // uint64, UUID, []byte, or string // The RFC-2046 [RFC2046] MIME type for the message's application-data section // (body). As per RFC-2046 [RFC2046] this can contain a charset parameter defining // the character encoding used: e.g., 'text/plain; charset="utf-8"'. // // For clarity, as per section 7.2.1 of RFC-2616 [RFC2616], where the content type // is unknown the content-type SHOULD NOT be set. This allows the recipient the // opportunity to determine the actual type. Where the section is known to be truly // opaque binary data, the content-type SHOULD be set to application/octet-stream. // // When using an application-data section with a section code other than data, // content-type SHOULD NOT be set. ContentType string // The content-encoding property is used as a modifier to the content-type. // When present, its value indicates what additional content encodings have been // applied to the application-data, and thus what decoding mechanisms need to be // applied in order to obtain the media-type referenced by the content-type header // field. // // Content-encoding is primarily used to allow a document to be compressed without // losing the identity of its underlying content type. // // Content-encodings are to be interpreted as per section 3.5 of RFC 2616 [RFC2616]. // Valid content-encodings are registered at IANA [IANAHTTPPARAMS]. // // The content-encoding MUST NOT be set when the application-data section is other // than data. The binary representation of all other application-data section types // is defined completely in terms of the AMQP type system. // // Implementations MUST NOT use the identity encoding. Instead, implementations // SHOULD NOT set this property. Implementations SHOULD NOT use the compress encoding, // except as to remain compatible with messages originally sent with other protocols, // e.g. HTTP or SMTP. // // Implementations SHOULD NOT specify multiple content-encoding values except as to // be compatible with messages originally sent with other protocols, e.g. HTTP or SMTP. ContentEncoding string // An absolute time when this message is considered to be expired. AbsoluteExpiryTime time.Time // An absolute time when this message was created. CreationTime time.Time // Identifies the group the message belongs to. GroupID string // The relative position of this message within its group. GroupSequence uint32 // RFC-1982 sequence number // This is a client-specific id that is used so that client can send replies to this // message to a specific group. ReplyToGroupID string }
MessageProperties is the defined set of properties for AMQP messages.
type ReceiverSettleMode ¶
type ReceiverSettleMode uint8
ReceiverSettleMode specifies how the receiver will settle messages.
const ( // Receiver will spontaneously settle all incoming transfers. ModeFirst ReceiverSettleMode = 0 // Receiver will only settle after sending the disposition to the // sender and receiving a disposition indicating settlement of // the delivery from the sender. ModeSecond ReceiverSettleMode = 1 )
Receiver Settlement Modes
func (*ReceiverSettleMode) String ¶
func (m *ReceiverSettleMode) String() string
type SenderSettleMode ¶
type SenderSettleMode uint8
SenderSettleMode specifies how the sender will settle messages.
const ( // Sender will send all deliveries initially unsettled to the receiver. ModeUnsettled SenderSettleMode = 0 // Sender will send all deliveries settled to the receiver. ModeSettled SenderSettleMode = 1 // Sender MAY send a mixture of settled and unsettled deliveries to the receiver. ModeMixed SenderSettleMode = 2 )
Sender Settlement Modes
func (*SenderSettleMode) String ¶
func (m *SenderSettleMode) String() string