fix 'durable' setting in RabbitMQ (#1183)
This commit is contained in:
parent
a9cf218c04
commit
494596be0e
|
@ -11,6 +11,7 @@ import (
|
|||
type metadata struct {
|
||||
consumerID string
|
||||
host string
|
||||
durable bool
|
||||
deleteWhenUnused bool
|
||||
autoAck bool
|
||||
requeueInFailure bool
|
||||
|
@ -23,6 +24,7 @@ type metadata struct {
|
|||
// createMetadata creates a new instance from the pubsub metadata.
|
||||
func createMetadata(pubSubMetadata pubsub.Metadata) (*metadata, error) {
|
||||
result := metadata{
|
||||
durable: true,
|
||||
deleteWhenUnused: true,
|
||||
autoAck: false,
|
||||
reconnectWait: time.Duration(defaultReconnectWaitSeconds) * time.Second,
|
||||
|
@ -47,6 +49,12 @@ func createMetadata(pubSubMetadata pubsub.Metadata) (*metadata, error) {
|
|||
}
|
||||
}
|
||||
|
||||
if val, found := pubSubMetadata.Properties[metadataDurable]; found && val != "" {
|
||||
if boolVal, err := strconv.ParseBool(val); err == nil {
|
||||
result.durable = boolVal
|
||||
}
|
||||
}
|
||||
|
||||
if val, found := pubSubMetadata.Properties[metadataDeleteWhenUnusedKey]; found && val != "" {
|
||||
if boolVal, err := strconv.ParseBool(val); err == nil {
|
||||
result.deleteWhenUnused = boolVal
|
||||
|
@ -71,7 +79,7 @@ func createMetadata(pubSubMetadata pubsub.Metadata) (*metadata, error) {
|
|||
}
|
||||
}
|
||||
|
||||
if val, found := pubSubMetadata.Properties[metadataprefetchCount]; found && val != "" {
|
||||
if val, found := pubSubMetadata.Properties[metadataPrefetchCount]; found && val != "" {
|
||||
if intVal, err := strconv.Atoi(val); err == nil {
|
||||
result.prefetchCount = uint8(intVal)
|
||||
}
|
||||
|
|
|
@ -127,7 +127,7 @@ func TestCreateMetadata(t *testing.T) {
|
|||
fakeMetaData := pubsub.Metadata{
|
||||
Properties: fakeProperties,
|
||||
}
|
||||
fakeMetaData.Properties[metadataprefetchCount] = "1"
|
||||
fakeMetaData.Properties[metadataPrefetchCount] = "1"
|
||||
|
||||
// act
|
||||
m, err := createMetadata(fakeMetaData)
|
||||
|
@ -206,6 +206,7 @@ func TestCreateMetadata(t *testing.T) {
|
|||
fakeMetaData := pubsub.Metadata{
|
||||
Properties: fakeProperties,
|
||||
}
|
||||
fakeMetaData.Properties[metadataDurable] = tt.in
|
||||
|
||||
// act
|
||||
m, err := createMetadata(fakeMetaData)
|
||||
|
@ -214,6 +215,7 @@ func TestCreateMetadata(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.Equal(t, fakeProperties[metadataHostKey], m.host)
|
||||
assert.Equal(t, fakeProperties[metadataConsumerIDKey], m.consumerID)
|
||||
assert.Equal(t, tt.expected, m.durable)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ const (
|
|||
|
||||
metadataHostKey = "host"
|
||||
metadataConsumerIDKey = "consumerID"
|
||||
metadataDurable = "durable"
|
||||
metadataDeleteWhenUnusedKey = "deletedWhenUnused"
|
||||
metadataAutoAckKey = "autoAck"
|
||||
metadataDeliveryModeKey = "deliveryMode"
|
||||
|
@ -31,7 +32,7 @@ const (
|
|||
metadataReconnectWaitSeconds = "reconnectWaitSeconds"
|
||||
|
||||
defaultReconnectWaitSeconds = 10
|
||||
metadataprefetchCount = "prefetchCount"
|
||||
metadataPrefetchCount = "prefetchCount"
|
||||
)
|
||||
|
||||
// RabbitMQ allows sending/receiving messages in pub/sub format.
|
||||
|
@ -228,7 +229,7 @@ func (r *rabbitMQ) prepareSubscription(channel rabbitMQChannelBroker, req pubsub
|
|||
}
|
||||
|
||||
r.logger.Debugf("%s declaring queue '%s'", logMessagePrefix, queueName)
|
||||
q, err := channel.QueueDeclare(queueName, true, r.metadata.deleteWhenUnused, false, false, nil)
|
||||
q, err := channel.QueueDeclare(queueName, r.metadata.durable, r.metadata.deleteWhenUnused, false, false, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue