Beispiel #1
0
        public async Task <ActionResult> Test()
        {
            var builder = new RoutingSlipBuilder(NewId.NextGuid());

            builder.AddActivity("CreateGroup", new Uri("rabbitmq://localhost/vhost/operations.activities.accountinggroup.create_accounting_group"));
            builder.AddActivity("AssignOwnership", new Uri("rabbitmq://localhost/vhost/operations.activities.accountinggroup.assign_accounting_group_ownership"));

            builder.SetVariables(new
            {
                Id             = Guid.NewGuid(),
                DisplayName    = "Test",
                SaleStrategyId = Guid.Parse("{DDF6FE32-F6C7-42DA-0001-4FD368D0D8B9}"),
                OwnerUserId    = Guid.Parse("{DDF6FE32-F6C7-42DA-0002-4FD368D0D8B9}")
            });

            RoutingSlip routingSlip = builder.Build();

            await _busControl.Publish <RoutingSlipCreated>(new
            {
                TrackingNumber = routingSlip.TrackingNumber,
                Timestamp      = routingSlip.CreateTimestamp,
            });

            await _busControl.Execute(routingSlip);

            return(new OkObjectResult(routingSlip.TrackingNumber));
        }
Beispiel #2
0
        public async Task <IActionResult> Get(string request)
        {
            if (string.IsNullOrEmpty(request))
            {
                return(BadRequest());
            }

            var builder = new RoutingSlipBuilder(NewId.NextGuid());

            //1
            //builder.AddActivity("DownloadImage", new Uri("rabbitmq://localhost/execute_downloadimage"), new
            //{
            //    ImageUri = new Uri("http://images.google.com/someImage.jpg")
            //});
            //2
            //builder.AddActivity("DownloadImage", new Uri("rabbitmq://localhost/execute_downloadimage"));
            //builder.AddVariable("ImageUri", "http://images.google.com/someImage.jpg");
            //3: si el ProcessImage no depende del fin de DownloadImage
            builder.AddActivity("DownloadImage", new Uri("rabbitmq://localhost/execute_downloadimage"));
            builder.AddActivity("ProcessImage", new Uri("rabbitmq://localhost/execute_processimage"));
            builder.AddVariable("ImageUri", "http://images.google.com/someImage.jpg");

            builder.AddActivity("FilterImage", new Uri("rabbitmq://localhost/execute_filterimage"));
            builder.AddVariable("WorkPath", "\\dfs\\work");
            //Events
            //1
            //builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.All);
            //2 modo flags
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"),
                                    RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);
            //builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"),
            //    RoutingSlipEvents.Completed, RoutingSlipEventContents.None);
            //3
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.Completed);
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.Faulted);
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.CompensationFailed);

            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.ActivityCompleted);
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.ActivityFaulted);
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.ActivityCompensated);
            builder.AddSubscription(new Uri("rabbitmq://localhost/log-events"), RoutingSlipEvents.ActivityCompensationFailed);
            // 4 custom public interface OrderProcessingCompleted
            //builder.AddSubscription(new Uri("rabbitmq://localhost/order-events"),
            //    RoutingSlipEvents.Completed,
            //    x => x.Send<OrderProcessingCompleted>(new
            //    {
            //        OrderId = "BFG-9000",
            //        OrderApproval = "ComeGetSome"
            //    }));
            var routingSlip = builder.Build();

            await _bus.Execute(routingSlip);

            return(Ok(new { routingSlip.TrackingNumber }));
        }
Beispiel #3
0
        public async Task <Guid> StartAsync()
        {
            var queueUri = new Uri(_busControl.Address, Assembly.GetEntryAssembly().GenerateRoutingSlipFailureQueueName());

            _routingSlip.AddSubscription(queueUri,
                                         RoutingSlipEvents.Faulted | RoutingSlipEvents.ActivityCompensationFailed |
                                         RoutingSlipEvents.ActivityFaulted | RoutingSlipEvents.CompensationFailed);

            await _busControl.Execute(_routingSlip.Build());

            return(_routingSlip.TrackingNumber);
        }
        public async Task <Guid> PublishInsertCoding(Coding coding)
        {
            var builder = new RoutingSlipBuilder(NewId.NextGuid());

            builder.AddActivity("Core_Coding_Insert", new Uri($"{RabbitMqConstants.RabbitMqUri}Core_Coding_Insert"));
            builder.AddActivity("Kachar_Coding_Insert", new Uri($"{RabbitMqConstants.RabbitMqUri}Kachar_Coding_Insert"));
            builder.AddActivity("Rahavard_Coding_Insert", new Uri($"{RabbitMqConstants.RabbitMqUri}Rahavard_Coding_Insert"));
            builder.SetVariables(coding);
            var routingSlip = builder.Build();
            await _bus.Execute(routingSlip);

            return(routingSlip.TrackingNumber);
        }
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            await _bus.StartAsync(cancellationToken).ConfigureAwait(false);

            var builder = new RoutingSlipBuilder(Guid.NewGuid());

            builder.AddActivity("ScopedActivity", new Uri("queue:scoped_execute"));

            await _bus.Execute(builder.Build());

            var endpoint = await _bus.GetSendEndpoint(new Uri("queue:scoped"));

            await endpoint.Send <ITestEvent>(new { });
        }
Beispiel #6
0
        static void Main()
        {
            ConfigureLogger();

            // MassTransit to use Log4Net
            Log4NetLogger.Use();


            IBusControl busControl = CreateBus();

            busControl.StartAsync().Wait();

            string validateQueueName = ConfigurationManager.AppSettings["ValidateActivityQueue"];

            Uri validateAddress = _host.GetSendAddress(validateQueueName);

            string retrieveQueueName = ConfigurationManager.AppSettings["RetrieveActivityQueue"];

            Uri retrieveAddress = _host.GetSendAddress(retrieveQueueName);


            try
            {
                for (;;)
                {
                    Console.Write("Enter an address (quit exits): ");
                    string requestAddress = Console.ReadLine();
                    if (requestAddress == "quit")
                    {
                        break;
                    }

                    if (string.IsNullOrEmpty(requestAddress))
                    {
                        requestAddress = "http://www.microsoft.com/index.html";
                    }

                    int limit = 1;

                    if (requestAddress.All(x => char.IsDigit(x) || char.IsPunctuation(x)))
                    {
                        string[] values = requestAddress.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                        requestAddress = values[0];
                        if (values.Length > 1)
                        {
                            limit = int.Parse(values[1]);
                            Console.WriteLine("Sending {0}", limit);
                        }
                    }

                    switch (requestAddress)
                    {
                    case "0":
                        requestAddress = "http://www.microsoft.com/index.html";
                        break;

                    case "1":
                        requestAddress = "http://i.imgur.com/Iroma7d.png";
                        break;

                    case "2":
                        requestAddress = "http://i.imgur.com/NK8eZUe.jpg";
                        break;
                    }

                    Uri requestUri;
                    try
                    {
                        requestUri = new Uri(requestAddress);
                    }
                    catch (UriFormatException)
                    {
                        Console.WriteLine("The URL entered is invalid: " + requestAddress);
                        continue;
                    }

                    IEnumerable <Task> tasks = Enumerable.Range(0, limit).Select(x => Task.Run(async() =>
                    {
                        var builder = new RoutingSlipBuilder(NewId.NextGuid());

                        builder.AddActivity("Validate", validateAddress);
                        builder.AddActivity("Retrieve", retrieveAddress);

                        builder.SetVariables(new
                        {
                            RequestId = NewId.NextGuid(),
                            Address   = requestUri,
                        });

                        RoutingSlip routingSlip = builder.Build();

                        await busControl.Publish <RoutingSlipCreated>(new
                        {
                            TrackingNumber = routingSlip.TrackingNumber,
                            Timestamp      = routingSlip.CreateTimestamp,
                        });

                        await busControl.Execute(routingSlip);
                    }));

                    Task.WaitAll(tasks.ToArray());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception!!! OMG!!! {0}", ex);
                Console.ReadLine();
            }
            finally
            {
                busControl.Stop();
            }
        }
Beispiel #7
0
        public async Task Run()
        {
            await Console.Out.WriteLineAsync("Sending the routing slip...");

            await _busControl.Execute(VoluntarilyCloseAccount("username_bob"));
        }