* Implement basic S3 notifications through queues Supports multiple queues and three basic queue types: 1. NilQueue -- messages don't get sent anywhere 2. LogQueue -- messages get logged 3. AmqpQueue -- messages are sent to an AMQP queue * api: Implement bucket notification. Supports two different queue types - AMQP - ElasticSearch. * Add support for redis
64 lines
2.2 KiB
Go
64 lines
2.2 KiB
Go
// Copyright (c) 2012, Sean Treadway, SoundCloud Ltd.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
// Source code and contact info at http://github.com/streadway/amqp
|
|
|
|
package amqp
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Return captures a flattened struct of fields returned by the server when a
|
|
// Publishing is unable to be delivered either due to the `mandatory` flag set
|
|
// and no route found, or `immediate` flag set and no free consumer.
|
|
type Return struct {
|
|
ReplyCode uint16 // reason
|
|
ReplyText string // description
|
|
Exchange string // basic.publish exchange
|
|
RoutingKey string // basic.publish routing key
|
|
|
|
// Properties
|
|
ContentType string // MIME content type
|
|
ContentEncoding string // MIME content encoding
|
|
Headers Table // Application or header exchange table
|
|
DeliveryMode uint8 // queue implemention use - non-persistent (1) or persistent (2)
|
|
Priority uint8 // queue implementation use - 0 to 9
|
|
CorrelationId string // application use - correlation identifier
|
|
ReplyTo string // application use - address to to reply to (ex: RPC)
|
|
Expiration string // implementation use - message expiration spec
|
|
MessageId string // application use - message identifier
|
|
Timestamp time.Time // application use - message timestamp
|
|
Type string // application use - message type name
|
|
UserId string // application use - creating user id
|
|
AppId string // application use - creating application
|
|
|
|
Body []byte
|
|
}
|
|
|
|
func newReturn(msg basicReturn) *Return {
|
|
props, body := msg.getContent()
|
|
|
|
return &Return{
|
|
ReplyCode: msg.ReplyCode,
|
|
ReplyText: msg.ReplyText,
|
|
Exchange: msg.Exchange,
|
|
RoutingKey: msg.RoutingKey,
|
|
|
|
Headers: props.Headers,
|
|
ContentType: props.ContentType,
|
|
ContentEncoding: props.ContentEncoding,
|
|
DeliveryMode: props.DeliveryMode,
|
|
Priority: props.Priority,
|
|
CorrelationId: props.CorrelationId,
|
|
ReplyTo: props.ReplyTo,
|
|
Expiration: props.Expiration,
|
|
MessageId: props.MessageId,
|
|
Timestamp: props.Timestamp,
|
|
Type: props.Type,
|
|
UserId: props.UserId,
|
|
AppId: props.AppId,
|
|
|
|
Body: body,
|
|
}
|
|
}
|