/// <summary> /// Establishes the idempotent context for the specified message context. /// </summary> /// <param name="idempotentSagaData">The idempotent saga data.</param> /// <param name="messageContext">The message context.</param> private void EstablishIdempotencyContextFor(IIdempotentSagaData idempotentSagaData, IMessageContext messageContext) { var id = messageContext.RebusTransportMessageId; var serializer = backbone.SerializeMessages; log.Debug("Established idempotent saga context for: {0} (Handler: {1})", id, idempotentSagaData.GetType()); var message = new Message() { Headers = messageContext.Headers, Messages = new object[] { messageContext.CurrentMessage } }; var serializedMessage = serializer.Serialize(message); var executionResults = new IdempotentSagaResults(id, serializedMessage, serializer.GetType()); messageContext.Items[Headers.IdempotentSagaResults] = executionResults; }