コード例 #1
0
    public Guid GetCorrelationId()
    {
        MbMessageContext mbMessageContext = MbMessageContextProvider.Current;

        if (_correlationCtx.CorrelationContext != null && mbMessageContext != null)
        {
            throw new CorrelationIdNotFoundException("Cannot obtain CorrelationID: both contexts are presented.");
        }

        if (_correlationCtx.CorrelationContext == null && mbMessageContext == null)
        {
            return(Guid.Empty);
        }

        //веб-запрос
        if (_correlationCtx.CorrelationContext != null && mbMessageContext == null)
        {
            if (Guid.TryParse(_correlationCtx.CorrelationContext.CorrelationId, out Guid correlationId))
            {
                return(correlationId);
            }
            else
            {
                return(Guid.Empty);
            }
        }

        //запрос из шины
        if (_correlationCtx.CorrelationContext == null && mbMessageContext != null)
        {
            if (mbMessageContext.CorrelationId == Guid.Empty)
            {
                throw new CorrelationIdNotFoundException("Cannot obtain CorrelationID from message bus message.");
            }

            return(mbMessageContext.CorrelationId);
        }

        throw new CorrelationIdNotFoundException("Cannot obtain CorrelationID: no context.");
    }
コード例 #2
0
    private static MbMessageContext GetData()
    {
        MbMessageContext mbMessageContext = new MbMessageContext();

        PipeContext current = MbMessageContextStack.Current;

        ConsumeContext <CorrelatedBy <Guid> > correlationIdContext = current?.GetPayload <ConsumeContext <CorrelatedBy <Guid> > >();

        if (correlationIdContext != null)
        {
            mbMessageContext.CorrelationId = correlationIdContext.Message.CorrelationId;
        }

        if (mbMessageContext.CorrelationId != Guid.Empty)
        {
            return(mbMessageContext);
        }
        else
        {
            return(null);
        }
    }