Exemple #1
0
        public void MoveToQueue(string queueName, Message message)
        {
            _logger.DebugFormat("Moving message {0} to {1}", message.Id.MessageIdentifier, queueName);
            var tx = _messageStore.BeginTransaction();

            _messageStore.MoveToQueue(tx, queueName, message);
            tx.Commit();
            message.Queue = queueName;
            _receiveSubject.OnNext(message);
        }
        public ISimpleMessageQueueTransaction BeginTransaction()
        {
            var transaction = _messageStore.BeginTransaction();

            transaction.Queue = Queue;

            return(transaction);
        }
Exemple #3
0
        public async Task receiving_a_valid_message()
        {
            var expected = ObjectMother.NewMessage <OutgoingMessage>("test");

            expected.Data        = Encoding.UTF8.GetBytes("hello");
            expected.Destination = new Uri($"lq.tcp://localhost:{_endpoint.Port}");
            var tx = _store.BeginTransaction();

            _sendingStore.StoreOutgoing(tx, expected);
            tx.Commit();
            var messages = new[] { expected };
            var receivingCompletionSource = new TaskCompletionSource <Message>();

            using (_receiver.StartReceiving().Subscribe(x => { receivingCompletionSource.SetResult(x); }))
                using (var client = new TcpClient())
                {
                    await client.ConnectAsync(_endpoint.Address, _endpoint.Port);

                    var outgoing         = new OutgoingMessageBatch(expected.Destination, messages, client, new NoSecurity());
                    var completionSource = new TaskCompletionSource <bool>();

                    using (_sender.Send(outgoing).Subscribe(x =>
                    {
                        completionSource.SetResult(true);
                    }))
                    {
                        await Task.WhenAny(completionSource.Task, Task.Delay(100));
                    }
                    await Task.WhenAny(receivingCompletionSource.Task, Task.Delay(100));
                }
            receivingCompletionSource.Task.IsCompleted.ShouldBeTrue();
            var actual = receivingCompletionSource.Task.Result;

            actual.ShouldNotBeNull();
            actual.Id.ShouldBe(expected.Id);
            actual.Queue.ShouldBe(expected.Queue);
            Encoding.UTF8.GetString(actual.Data).ShouldBe("hello");
        }