// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AliCloud.EventBridge.Outputs
{

    [OutputType]
    public sealed class RuleTarget
    {
        /// <summary>
        /// Dead letter queue. Events that are not processed or exceed the number of retries will be written to the dead letter. Support message service MNS and message queue RocketMQ. See the following `Block dead_letter_queue`.
        /// </summary>
        public readonly Outputs.RuleTargetDeadLetterQueue? DeadLetterQueue;
        /// <summary>
        /// The endpoint of target.
        /// </summary>
        public readonly string Endpoint;
        /// <summary>
        /// A list of param. See the following `Block param_list`.
        /// </summary>
        public readonly ImmutableArray<Outputs.RuleTargetParamList> ParamLists;
        /// <summary>
        /// The retry policy that is used to push the event. Valid values:
        /// - `BACKOFF_RETRY`: Backoff retry. The request can be retried up to three times. The interval between two consecutive retries is a random value between 10 and 20 seconds.
        /// - `EXPONENTIAL_DECAY_RETRY`: Exponential decay retry. The request can be retried up to 176 times. The interval between two consecutive retries exponentially increases to 512 seconds, and the total retry time is one day. The specific retry intervals are 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 512, ..., and 512 seconds, including a maximum of one hundred and sixty-seven 512 seconds in total.
        /// </summary>
        public readonly string? PushRetryStrategy;
        /// <summary>
        /// The ID of target.
        /// </summary>
        public readonly string TargetId;
        /// <summary>
        /// The type of target. Valid values: `acs.fc.function`, `acs.mns.topic`, `acs.mns.queue`,`http`,`acs.sms`,`acs.mail`,`acs.dingtalk`,`https`, `acs.eventbridge`,`acs.rabbitmq` and `acs.rocketmq`.
        /// </summary>
        public readonly string Type;

        [OutputConstructor]
        private RuleTarget(
            Outputs.RuleTargetDeadLetterQueue? deadLetterQueue,

            string endpoint,

            ImmutableArray<Outputs.RuleTargetParamList> paramLists,

            string? pushRetryStrategy,

            string targetId,

            string type)
        {
            DeadLetterQueue = deadLetterQueue;
            Endpoint = endpoint;
            ParamLists = paramLists;
            PushRetryStrategy = pushRetryStrategy;
            TargetId = targetId;
            Type = type;
        }
    }
}
