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); }
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"); }