示例#1
0
        public void Should_perform_admirably()
        {
            var random = new Random();

            _count = 50000;

            _updateValues = Enumerable.Range(0, _count)
                            .Select(x => random.Next(1, 1000))
                            .Select(x => x > 960 ? 1000 : x)
                            .Select(x => new UpdateValue(x, random.Next(1, 500000) / 100m))
                            .ToList();

            var input = new ChannelAdapter();

            using (input.Connect(x =>
            {
                x.AddConsumerOf <UpdateValue>()
                .UsingInstance()
                .Of <TestInstance>()
                .DistributedBy(msg => msg.Id)
                .PersistUsingNHibernate()
                .UsingSessionProvider(m => SessionFactory.OpenSession())
                .OnChannel(m => m.UpdateValueChannel)
                .CreateNewInstanceBy(m => new TestInstance(m.Id));
            }))
            {
                var complete = new Future <int>();
                var latch    = new CountdownLatch(_count, complete.Complete);

                _stopwatch = Stopwatch.StartNew();
                UpdateValue.SetReceivedCallback(x => latch.CountDown());

                _updateValues.Each(input.Send);

                complete.WaitUntilCompleted(2.Minutes()).ShouldBeTrue();

                _stopwatch.Stop();
            }
        }
示例#2
0
 void HandleUpdateValue(UpdateValue m)
 {
     PreviousValues.Add(new PreviousValue(SystemUtil.UtcNow, Value));
     Value += m.Value;
     m.MarkAsReceived();
 }
示例#3
0
		void HandleUpdateValue(UpdateValue m)
		{
			PreviousValues.Add(new PreviousValue(SystemUtil.UtcNow, Value));
			Value += m.Value;
			m.MarkAsReceived();
		}