Exemple #1
0
        protected SubscribeOptions(ISubscribeOptionsBuilder builder, bool pull, bool ordered, string deliverSubject, string deliverGroup)
        {
            Pull             = pull;
            Bind             = builder.Bind;
            Ordered          = ordered;
            MessageAlarmTime = builder.MessageAlarmTime;

            if (Ordered && Bind)
            {
                throw JsSoOrderedNotAllowedWithBind.Instance();
            }

            Stream = Validator.ValidateStreamName(builder.Stream, builder.Bind);

            string durable = Validator.ValidateMustMatchIfBothSupplied(builder.Durable, builder.Cc?.Durable, JsSoDurableMismatch);

            durable = Validator.ValidateDurable(durable, builder.Bind);

            deliverGroup = Validator.ValidateMustMatchIfBothSupplied(deliverGroup, builder.Cc?.DeliverGroup, JsSoDeliverGroupMismatch);

            deliverSubject = Validator.ValidateMustMatchIfBothSupplied(deliverSubject, builder.Cc?.DeliverSubject, JsSoDeliverSubjectGroupMismatch);

            if (Ordered)
            {
                Validator.ValidateNotSupplied(deliverGroup, JsSoOrderedNotAllowedWithDeliverGroup);
                Validator.ValidateNotSupplied(durable, JsSoOrderedNotAllowedWithDurable);
                Validator.ValidateNotSupplied(deliverSubject, JsSoOrderedNotAllowedWithDeliverSubject);
                long hb = DefaultOrderedHeartbeat;

                if (builder.Cc != null)
                {
                    // want to make sure they didn't set it or they didn't set it to something other than none
                    if (builder.Cc._ackPolicy != null && builder.Cc._ackPolicy != AckPolicy.None)
                    {
                        throw JsSoOrderedRequiresAckPolicyNone.Instance();
                    }
                    if (builder.Cc.MaxDeliver > 1)
                    {
                        throw JsSoOrderedRequiresMaxDeliver.Instance();
                    }

                    Duration ccHb = builder.Cc.IdleHeartbeat;
                    if (ccHb != null && ccHb.Millis > hb)
                    {
                        hb = ccHb.Millis;
                    }
                }
                ConsumerConfiguration = ConsumerConfiguration.Builder(builder.Cc)
                                        .WithAckPolicy(AckPolicy.None)
                                        .WithMaxDeliver(1)
                                        .WithFlowControl(hb)
                                        .WithAckWait(Duration.OfHours(22))
                                        .Build();
            }
            else
            {
                ConsumerConfiguration = ConsumerConfiguration.Builder(builder.Cc)
                                        .WithDurable(durable)
                                        .WithDeliverSubject(deliverSubject)
                                        .WithDeliverGroup(deliverGroup)
                                        .Build();
            }
        }
Exemple #2
0
 // Validation is done by base class
 private PushSubscribeOptions(ISubscribeOptionsBuilder builder, bool ordered, string deliverSubject, string deliverGroup)
     : base(builder, false, ordered, deliverSubject, deliverGroup)
 {
 }
Exemple #3
0
 // Validation is done by base class
 private PullSubscribeOptions(ISubscribeOptionsBuilder builder) : base(builder, true, false, null, null)
 {
 }