示例#1
0
 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);
     }
 }
示例#2
0
 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;
 }