public InvalidSubscriptionException(Message request, Nack nack)
            : base(TextForErrorCode(nack.error) + ": " + nack.FormattedMessage)
        {
            switch (request.TypeId)
            {
                case SubAddRqst.ID:
                    Expression = ((SubAddRqst)request).subscriptionExpr;
                    break;
                case SubModRqst.ID:
                    Expression = ((SubModRqst)request).subscriptionExpr;
                    break;
                default:
                    Expression = "";
                    break;
            }

            Reason = nack.error == NackError.ExpisTrivial ? SubscriptionError.TrivialExpression : SubscriptionError.SyntaxError;
        }
        internal async Task EnableSubscriptionAsync(EventBusSubscription subscription)
        {
            _logger.LogDebug("Enabling subscription: {0}", subscription.Name);
            if (IsConnectionOpen)
            {
                try {
                    await SendMessageAndWaitForAcknowledgeAsync(new SubscribeAction {
                        Rule    = subscription.Name,
                        Pattern = subscription.Pattern
                    });
                } catch (InvalidOperationException) {
                    // websocket is not connected; ignore error
                } catch (Exception e) {
                    _logger.LogDebug("Activating subscription FAILED: {0}\n{1}", subscription.Name, e);
                    subscription.Status = EventBusSubscriptionStatus.Error;

                    // subscription failed
                    SubscriptionError?.Invoke(this, new EventBusSubscriptErrorEventArgs(subscription, e));
                }
            }
        }
Пример #3
0
 public void RecordException(SubscriptionError errorType, string exception)
 {
     _stats.ErrorType = errorType;
     _stats.Exception = exception;
 }