public Task Dispatch(TransportOperations outgoingMessages, TransportTransaction transaction, ContextBag context)
        {
            foreach (var transportOperation in outgoingMessages.UnicastTransportOperations)
            {
                var destination = new InMemoryDestination(transportOperation.Destination);
                SharedStorage.Instance.Send(destination, transportOperation.Message, transportOperation.DeliveryConstraints);
            }

            foreach (var transportOperation in outgoingMessages.MulticastTransportOperations)
            {
                SharedStorage.Instance.Publish(transportOperation.Message, transportOperation.MessageType);
            }

            return(Task.CompletedTask);
        }
        public void Send(InMemoryDestination destination, OutgoingMessage message, List <DeliveryConstraint> constraints)
        {
            var storage = this.endpointStorage.GetOrAdd(destination.EndPoint, new EndpointStorage(destination.EndPoint));

            storage.Enqueue(message, constraints);
        }