Beispiel #1
0
        public void UnserializeTest()
        {
            var o = new ActionOrder()
            {
                Uuid       = Guid.NewGuid().ToString(),
                Name       = "actionTest",
                ExecutedAt = ClockActionBus.Now(),
                PushedAt   = ClockActionBus.Now(),
                Result     = "ok",
                Success    = false,
            }.Argument("arg1", "{ \"test\": \"ok\" }")
            ;

            var txt = o.ToString();
            var p   = ActionOrder.Unserialize(txt);

            Assert.AreEqual(o.ExecutedAt, p.ExecutedAt);
            Assert.AreEqual(o.Name, p.Name);
            Assert.AreEqual(o.PushedAt, p.PushedAt);
            Assert.AreEqual(o.Result, p.Result);
            Assert.AreEqual(o.Success, p.Success);
            Assert.AreEqual(o.Uuid, p.Uuid);

            Assert.AreEqual(o.Arguments.Count, 1);
            Assert.AreEqual(o.Arguments.Count, p.Arguments.Count);

            var txt2 = p.ToString();
            var q    = ActionOrder.Unserialize(txt2);

            Assert.AreEqual(p.Arguments["arg1"].Value, q.Arguments["arg1"].Value);

            Assert.AreEqual(txt, txt2);
        }
Beispiel #2
0
        private Task Callback(IBrokerContext context)
        {
            ActionOrder order = ActionOrder.Unserialize(context.Utf8Data);

            if (_actionRepositories.Execute(order))
            {
                string Result = string.Empty;
                switch (order.Name)
                {
                case "business1.PushScan":
                    Result = ((Guid)order.Result).ToString("B");
                    break;

                default:
                    Result.ToString();
                    break;
                }

                _acknowledgeQueue.Publish(
                    new
                {
                    Order = order,
                    order.ExecutedAt,
                    Result
                }
                    );

                context.Commit();
            }
            else
            {
                if (context.CanBeRequeued())
                {
                    context.RequeueLast();
                }

                else
                {
                    var Exception = order.Result as Exception;
                    _deadQueue.Publish(
                        new
                    {
                        Order = order,
                        order.ExecutedAt,
                        order.PushedAt,
                        Exception
                    }
                        );

                    context.Reject();
                }
            }

            return(Task.CompletedTask);
        }