Ejemplo n.º 1
0
        internal static async Task Main(string[] args)
        {
            IReadOnlyList <IHubProtocol> protocols = new IHubProtocol[] { new JsonHubProtocol() };
            var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                cfg.Host(new Uri("rabbitmq://localhost"), h =>
                {
                    h.Username("guest");
                    h.Password("guest");
                });
            });

            // Important! The bus must be started before using it!
            await busControl.StartAsync();

            do
            {
                Console.WriteLine("Enter message (or quit to exit)");
                Console.Write("> ");
                string value = Console.ReadLine();

                if ("quit".Equals(value, StringComparison.OrdinalIgnoreCase))
                {
                    break;
                }

                await busControl.Publish <All <ChatHub> >(new
                {
                    Messages = protocols.ToProtocolDictionary("broadcastMessage", new object[] { "backend-process", value })
                });
            }while (true);

            await busControl.StopAsync();
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> MasstransitSend()
        {
            var protocols = new IHubProtocol[] { new JsonHubProtocol() };

            await _publishEndpoint.Publish <All <ChatHub> >(new
            {
                Messages = protocols.ToProtocolDictionary("ReceiveMessage", new object[] { "message", "bbb" })
            });

            return(Accepted());
        }
Ejemplo n.º 3
0
        public async Task <ExecutionResult> Execute(ExecuteContext <BookFlightArgument> context)
        {
            await Task.Delay(BookItem.LongDelay);

            var protocols = new IHubProtocol[] { new JsonHubProtocol() };
            await context.Publish <All <ChatHub> >(new
            {
                Messages = protocols.ToProtocolDictionary("ReceiveMessage", new object[] { "message", $"Flight {context.Arguments.Message} was booked!" })
            });

            return(context.Completed(new { Message = context.Arguments.Message }));
        }
Ejemplo n.º 4
0
        public async Task <CompensationResult> Compensate(CompensateContext <BookFlightLogs> context)
        {
            await Task.Delay(BookItem.LongDelay);

            var protocols = new IHubProtocol[] { new JsonHubProtocol() };
            await context.Publish <All <ChatHub> >(new
            {
                Messages = protocols.ToProtocolDictionary("ReceiveMessage", new object[] { "message", $"Flight {context.Log.Message} was canceled!" })
            });

            return(context.Compensated());
        }
        public async Task Execute(BehaviorContext <BookingState, BookingFinalized> context, Behavior <BookingState, BookingFinalized> next)
        {
            await Task.Delay(1000);

            var consumeContext = context.GetPayload <ConsumeContext>();

            var protocols = new IHubProtocol[] { new JsonHubProtocol() };
            await consumeContext.Publish <All <ChatHub> >(new
            {
                Messages = protocols.ToProtocolDictionary("ReceiveMessage", new object[] { "done", $"Booking was successfully finalized!" })
            });

            await next.Execute(context).ConfigureAwait(false);
        }
Ejemplo n.º 6
0
        public async Task Consume(ConsumeContext <SubmitOrder> context)
        {
            var protocols = new IHubProtocol[] { new JsonHubProtocol() };
            await context.Publish <All <ChatHub> >(new
            {
                Messages = protocols.ToProtocolDictionary("ReceiveMessage", new object[] { "message", "ccc" })
            });

            await Task.Delay(10);

            if (context.RequestId != null) //is request/response
            {
                if (context.Message.OrderCustomer.Contains("test"))
                {
                    await context.RespondAsync <SubmitOrderRejected>(new SubmitOrderRejected
                    {
                        OrderId       = context.Message.OrderId,
                        OrderCustomer = context.Message.OrderCustomer,
                        Timestmp      = InVar.Timestamp,
                    });

                    return;
                }
                else
                {
                    await context.RespondAsync <SubmitOrderAccepted>(new SubmitOrderAccepted
                    {
                        OrderId       = context.Message.OrderId,
                        OrderCustomer = context.Message.OrderCustomer,
                        Timestmp      = InVar.Timestamp,
                    });
                }
            }

            //Saga
            await context.Publish <OrderSubmitted>(new OrderSubmitted
            {
                OrderId        = context.Message.OrderId,
                CustomerNumber = context.Message.OrderCustomer,
                Timestamp      = InVar.Timestamp
            });
        }