public void OneMessage() { var wait = new ManualResetEvent(false); Message[] recievedMsgs = null; var endPoint = "localhost"; using (var reciever = new Receiver("localhost", messages => { recievedMsgs = messages; return MockRepository.GenerateStub<IMessageAcceptance>(); })) { reciever.CompletedRecievingMessages += () => wait.Set(); reciever.Start(); new Sender { Destination = endPoint, Messages = new[] { new Message { Data = new byte[] {1, 2, 4, 5, 6}, SentAt = new DateTime(2001, 1, 1), Queue = "hello doggy", Id = MessageId.GenerateRandom() }, } }.Send(); wait.WaitOne(); Assert.Equal(1, recievedMsgs.Length); Assert.Equal("hello doggy", recievedMsgs[0].Queue); Assert.Equal(new byte[] { 1, 2, 4, 5, 6 }, recievedMsgs[0].Data); Assert.Equal(new DateTime(2001, 1, 1), recievedMsgs[0].SentAt); } }
public void Start() { AssertNotDisposedOrDisposing(); if (_wasStarted) throw new InvalidOperationException("The Start method may not be invoked more than once."); if (_endpoint != null) { _receiver = new Receiver(_endpoint, AcceptMessages); _receiver.Start(); } _queuedMessagesSender = new QueuedMessagesSender(_queueStorage, this); _sendingThread = new Thread(_queuedMessagesSender.Send) { IsBackground = true, Name = "Rhino File Sender Thread for " + _path }; _sendingThread.Start(); _purgeOldDataTimer = new Timer(_ => PurgeOldData(), null, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3)); _wasStarted = true; }