52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package rabbitmq_amqp
|
|
|
|
import "context"
|
|
|
|
type AMQPBindingInfo struct {
|
|
}
|
|
|
|
type AMQPBinding struct {
|
|
sourceExchangeName string
|
|
destinationQueue string
|
|
bindingKey string
|
|
management *AmqpManagement
|
|
}
|
|
|
|
func newAMQPBinding(management *AmqpManagement) *AMQPBinding {
|
|
return &AMQPBinding{management: management}
|
|
}
|
|
|
|
func (b *AMQPBinding) Key(bindingKey string) IBindingSpecification {
|
|
b.bindingKey = bindingKey
|
|
return b
|
|
}
|
|
|
|
func (b *AMQPBinding) SourceExchange(exchangeName string) IBindingSpecification {
|
|
b.sourceExchangeName = exchangeName
|
|
return b
|
|
}
|
|
|
|
func (b *AMQPBinding) DestinationQueue(queueName string) IBindingSpecification {
|
|
b.destinationQueue = queueName
|
|
return b
|
|
}
|
|
|
|
func (b *AMQPBinding) Bind(ctx context.Context) error {
|
|
|
|
path := bindingPath()
|
|
kv := make(map[string]any)
|
|
kv["binding_key"] = b.bindingKey
|
|
kv["source"] = b.sourceExchangeName
|
|
kv["destination_queue"] = b.destinationQueue
|
|
kv["arguments"] = make(map[string]any)
|
|
_, err := b.management.Request(ctx, kv, path, commandPost, []int{responseCode204})
|
|
return err
|
|
|
|
}
|
|
|
|
func (b *AMQPBinding) Unbind(ctx context.Context) error {
|
|
bindingPathWithExchangeQueueKey := bindingPathWithExchangeQueueKey(b.sourceExchangeName, b.destinationQueue, b.bindingKey)
|
|
_, err := b.management.Request(ctx, nil, bindingPathWithExchangeQueueKey, commandDelete, []int{responseCode204})
|
|
return err
|
|
}
|