コード例 #1
0
        public void simple_pum_para_pum()
        {
            var journalStorage = new InMemoryJournalStorage();

            var context = MachineContext.Create(b => b
                                                .RegisterMessages(typeof(EnvelopeSerializer_Event), typeof(EnvelopeSerializer_Child_Event))
                                                .RegisterIdentities(typeof(EnvelopeSerializer_Id))
                                                .AddRouter("process", new ProcessRouter())
                                                );

            var message = new EnvelopeSerializer_Event()
            {
                Rate = 0.7, Title = "Muahaha!"
            };
            var messageMetadata = new EventMetadata()
            {
                Receivers = new[] { new EnvelopeSerializer_Id()
                                    {
                                        Value = "hello"
                                    } }
            };

            context.RunHost(h => h
                            .AddNode(new RouterNode(context, "inproc://rep", "inproc://pub", "inproc://domain", journalStorage))
                            .AddNode(new ProcessesNode(context, "inproc://domain", "inproc://rep"))
                            .SetTimeout(700)
                            .Execute(token =>
            {
                using (var input = context.CreateSocket(SocketType.PUSH))
                {
                    input.Connect("inproc://rep", token);

                    input.SendPacket(context.CreatePacket(message, messageMetadata));
                    input.SendPacket(context.CreatePacket(message, messageMetadata));
                    input.SendPacket(context.CreatePacket(message, messageMetadata));
                    input.SendPacket(context.CreatePacket(message, messageMetadata));
                    input.SendPacket(context.CreatePacket(message, messageMetadata));
                }
            })
                            );

            var seq     = journalStorage.GetPrivateFieldValue <Int64>("_sequance");
            var storage = journalStorage.GetPrivateFieldValue <SortedList <Int64, IPacketMessageEnvelope> >("_storage");

            Assert.That(seq, Is.EqualTo(5));
            var firstMessage = (EnvelopeSerializer_Event)storage[1].Message;

            Assert.That(firstMessage == message, Is.False);
            Assert.That(firstMessage.Rate, Is.EqualTo(message.Rate));
            Assert.That(firstMessage.Title, Is.EqualTo(message.Title));

            var result = journalStorage.Load(3, 100);

            var queue = new Queue(1);
        }
コード例 #2
0
        public void mongo_journal_integration_test()
        {
            var server         = new MongoJournalServer("mongodb://localhost:27018/test_journal");
            var journalStorage = new MongoJournalStorage(server);

            var context = MachineContext.Create(b => b
                                                .RegisterMessages(typeof(EnvelopeSerializer_Event), typeof(EnvelopeSerializer_Child_Event))
                                                .RegisterIdentities(typeof(EnvelopeSerializer_Id))
                                                );

            var message = new EnvelopeSerializer_Event()
            {
                Rate = 0.7, Title = "Muahaha!"
            };

            context.RunHost(h => h
                            .AddNode(new RouterNode(context, "inproc://rep", "inproc://pub", "inproc://domain", journalStorage))
                            .SetTimeout(1000)
                            .Execute(token =>
            {
                using (var input = context.CreateSocket(SocketType.PUSH))
                {
                    input.Connect("inproc://rep", token);

//                        for (int i = 0; i < 100000; i++)
//                        {
                    input.SendPacket(context.CreatePacket(message));
                    input.SendPacket(context.CreatePacket(message));
                    input.SendPacket(context.CreatePacket(message));
                    input.SendPacket(context.CreatePacket(message));
                    input.SendPacket(context.CreatePacket(message));
                    //}
                }
            })
                            );

            var seq = server.GetCurrentSequence();

            Assert.That(seq, Is.EqualTo(5));
        }