All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.alicloud.amqp.BindingArgs Maven / Gradle / Ivy

There is a newer version: 3.63.0-alpha.1727424957
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.alicloud.amqp;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class BindingArgs extends com.pulumi.resources.ResourceArgs {

    public static final BindingArgs Empty = new BindingArgs();

    /**
     * The key-value pairs that are configured for the headers attributes of a message. Default value: `x-match:all`. Valid values:
     * - `x-match:all`: A headers exchange routes a message to a queue only if all binding attributes of the queue except for x-match match the headers attributes of the message.
     * - `x-match:any`: A headers exchange routes a message to a queue if one or more binding attributes of the queue except for x-match match the headers attributes of the message.
     * - > **NOTE:** If the exchange type is not 'HEADERS', the `argument` should not been set, otherwise, there are always "forces replacement" changes.
     * 
     */
    @Import(name="argument")
    private @Nullable Output argument;

    /**
     * @return The key-value pairs that are configured for the headers attributes of a message. Default value: `x-match:all`. Valid values:
     * - `x-match:all`: A headers exchange routes a message to a queue only if all binding attributes of the queue except for x-match match the headers attributes of the message.
     * - `x-match:any`: A headers exchange routes a message to a queue if one or more binding attributes of the queue except for x-match match the headers attributes of the message.
     * - > **NOTE:** If the exchange type is not 'HEADERS', the `argument` should not been set, otherwise, there are always "forces replacement" changes.
     * 
     */
    public Optional> argument() {
        return Optional.ofNullable(this.argument);
    }

    /**
     * The Binding Key.
     * * For a non-topic source exchange: The binding key can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
     *   The binding key must be 1 to 255 characters in length.
     * * For a topic source exchange: The binding key can contain letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
     *   If the binding key contains a number sign (#), the binding key must start with a number sign (#) followed by a period (.) or end with a number sign (#) that follows a period (.).
     *   The binding key must be 1 to 255 characters in length.
     * 
     */
    @Import(name="bindingKey", required=true)
    private Output bindingKey;

    /**
     * @return The Binding Key.
     * * For a non-topic source exchange: The binding key can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
     *   The binding key must be 1 to 255 characters in length.
     * * For a topic source exchange: The binding key can contain letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
     *   If the binding key contains a number sign (#), the binding key must start with a number sign (#) followed by a period (.) or end with a number sign (#) that follows a period (.).
     *   The binding key must be 1 to 255 characters in length.
     * 
     */
    public Output bindingKey() {
        return this.bindingKey;
    }

    /**
     * The type of the object that you want to bind to the source exchange. Valid values: `EXCHANGE`, `QUEUE`.
     * 
     */
    @Import(name="bindingType", required=true)
    private Output bindingType;

    /**
     * @return The type of the object that you want to bind to the source exchange. Valid values: `EXCHANGE`, `QUEUE`.
     * 
     */
    public Output bindingType() {
        return this.bindingType;
    }

    /**
     * The name of the object that you want to bind to the source exchange.
     * 
     */
    @Import(name="destinationName", required=true)
    private Output destinationName;

    /**
     * @return The name of the object that you want to bind to the source exchange.
     * 
     */
    public Output destinationName() {
        return this.destinationName;
    }

    /**
     * The ID of the instance.
     * 
     */
    @Import(name="instanceId", required=true)
    private Output instanceId;

    /**
     * @return The ID of the instance.
     * 
     */
    public Output instanceId() {
        return this.instanceId;
    }

    /**
     * The name of the source exchange.
     * 
     */
    @Import(name="sourceExchange", required=true)
    private Output sourceExchange;

    /**
     * @return The name of the source exchange.
     * 
     */
    public Output sourceExchange() {
        return this.sourceExchange;
    }

    /**
     * The name of the vhost.
     * 
     */
    @Import(name="virtualHostName", required=true)
    private Output virtualHostName;

    /**
     * @return The name of the vhost.
     * 
     */
    public Output virtualHostName() {
        return this.virtualHostName;
    }

    private BindingArgs() {}

    private BindingArgs(BindingArgs $) {
        this.argument = $.argument;
        this.bindingKey = $.bindingKey;
        this.bindingType = $.bindingType;
        this.destinationName = $.destinationName;
        this.instanceId = $.instanceId;
        this.sourceExchange = $.sourceExchange;
        this.virtualHostName = $.virtualHostName;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(BindingArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private BindingArgs $;

        public Builder() {
            $ = new BindingArgs();
        }

        public Builder(BindingArgs defaults) {
            $ = new BindingArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param argument The key-value pairs that are configured for the headers attributes of a message. Default value: `x-match:all`. Valid values:
         * - `x-match:all`: A headers exchange routes a message to a queue only if all binding attributes of the queue except for x-match match the headers attributes of the message.
         * - `x-match:any`: A headers exchange routes a message to a queue if one or more binding attributes of the queue except for x-match match the headers attributes of the message.
         * - > **NOTE:** If the exchange type is not 'HEADERS', the `argument` should not been set, otherwise, there are always "forces replacement" changes.
         * 
         * @return builder
         * 
         */
        public Builder argument(@Nullable Output argument) {
            $.argument = argument;
            return this;
        }

        /**
         * @param argument The key-value pairs that are configured for the headers attributes of a message. Default value: `x-match:all`. Valid values:
         * - `x-match:all`: A headers exchange routes a message to a queue only if all binding attributes of the queue except for x-match match the headers attributes of the message.
         * - `x-match:any`: A headers exchange routes a message to a queue if one or more binding attributes of the queue except for x-match match the headers attributes of the message.
         * - > **NOTE:** If the exchange type is not 'HEADERS', the `argument` should not been set, otherwise, there are always "forces replacement" changes.
         * 
         * @return builder
         * 
         */
        public Builder argument(String argument) {
            return argument(Output.of(argument));
        }

        /**
         * @param bindingKey The Binding Key.
         * * For a non-topic source exchange: The binding key can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
         *   The binding key must be 1 to 255 characters in length.
         * * For a topic source exchange: The binding key can contain letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
         *   If the binding key contains a number sign (#), the binding key must start with a number sign (#) followed by a period (.) or end with a number sign (#) that follows a period (.).
         *   The binding key must be 1 to 255 characters in length.
         * 
         * @return builder
         * 
         */
        public Builder bindingKey(Output bindingKey) {
            $.bindingKey = bindingKey;
            return this;
        }

        /**
         * @param bindingKey The Binding Key.
         * * For a non-topic source exchange: The binding key can contain only letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
         *   The binding key must be 1 to 255 characters in length.
         * * For a topic source exchange: The binding key can contain letters, digits, hyphens (-), underscores (_), periods (.), and at signs ({@literal @}).
         *   If the binding key contains a number sign (#), the binding key must start with a number sign (#) followed by a period (.) or end with a number sign (#) that follows a period (.).
         *   The binding key must be 1 to 255 characters in length.
         * 
         * @return builder
         * 
         */
        public Builder bindingKey(String bindingKey) {
            return bindingKey(Output.of(bindingKey));
        }

        /**
         * @param bindingType The type of the object that you want to bind to the source exchange. Valid values: `EXCHANGE`, `QUEUE`.
         * 
         * @return builder
         * 
         */
        public Builder bindingType(Output bindingType) {
            $.bindingType = bindingType;
            return this;
        }

        /**
         * @param bindingType The type of the object that you want to bind to the source exchange. Valid values: `EXCHANGE`, `QUEUE`.
         * 
         * @return builder
         * 
         */
        public Builder bindingType(String bindingType) {
            return bindingType(Output.of(bindingType));
        }

        /**
         * @param destinationName The name of the object that you want to bind to the source exchange.
         * 
         * @return builder
         * 
         */
        public Builder destinationName(Output destinationName) {
            $.destinationName = destinationName;
            return this;
        }

        /**
         * @param destinationName The name of the object that you want to bind to the source exchange.
         * 
         * @return builder
         * 
         */
        public Builder destinationName(String destinationName) {
            return destinationName(Output.of(destinationName));
        }

        /**
         * @param instanceId The ID of the instance.
         * 
         * @return builder
         * 
         */
        public Builder instanceId(Output instanceId) {
            $.instanceId = instanceId;
            return this;
        }

        /**
         * @param instanceId The ID of the instance.
         * 
         * @return builder
         * 
         */
        public Builder instanceId(String instanceId) {
            return instanceId(Output.of(instanceId));
        }

        /**
         * @param sourceExchange The name of the source exchange.
         * 
         * @return builder
         * 
         */
        public Builder sourceExchange(Output sourceExchange) {
            $.sourceExchange = sourceExchange;
            return this;
        }

        /**
         * @param sourceExchange The name of the source exchange.
         * 
         * @return builder
         * 
         */
        public Builder sourceExchange(String sourceExchange) {
            return sourceExchange(Output.of(sourceExchange));
        }

        /**
         * @param virtualHostName The name of the vhost.
         * 
         * @return builder
         * 
         */
        public Builder virtualHostName(Output virtualHostName) {
            $.virtualHostName = virtualHostName;
            return this;
        }

        /**
         * @param virtualHostName The name of the vhost.
         * 
         * @return builder
         * 
         */
        public Builder virtualHostName(String virtualHostName) {
            return virtualHostName(Output.of(virtualHostName));
        }

        public BindingArgs build() {
            if ($.bindingKey == null) {
                throw new MissingRequiredPropertyException("BindingArgs", "bindingKey");
            }
            if ($.bindingType == null) {
                throw new MissingRequiredPropertyException("BindingArgs", "bindingType");
            }
            if ($.destinationName == null) {
                throw new MissingRequiredPropertyException("BindingArgs", "destinationName");
            }
            if ($.instanceId == null) {
                throw new MissingRequiredPropertyException("BindingArgs", "instanceId");
            }
            if ($.sourceExchange == null) {
                throw new MissingRequiredPropertyException("BindingArgs", "sourceExchange");
            }
            if ($.virtualHostName == null) {
                throw new MissingRequiredPropertyException("BindingArgs", "virtualHostName");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy