public static void Run(
            [ServiceBusTrigger("shippingsinitiated", Connection = "ServiceBus")]
            /*ShippingCreatedMessage*/ string msg, // Issue with deserializing incoming message

            ILogger log)
        {
            log.LogInformation($"NotifyClientsAboutOrderShipment SB queue trigger function processed message: {msg}");

            ShippingCreatedMessage message = JsonConvert.DeserializeObject <ShippingCreatedMessage>(msg);

            var messageToNotify = new { orderId = message.OrderId };

            // TODO: Notify users' clients through SignalR...
        }
Пример #2
0
        public static async Task Run(
            [ServiceBusTrigger("shippingsinitiated", Connection = "ServiceBus")]
            ShippingCreatedMessage message,

            [SignalR(HubName = "shippingsHub", ConnectionStringSetting = "SignalR")]
            IAsyncCollector <SignalRMessage> notificationMessages,

            ILogger log)
        {
            log.LogInformation($"NotifyClientsAboutOrderShipment SB queue trigger function processed message: {message}");

            // NOTE: Group feature not yet available in SignalR binding
            var messageToNotify = new { userId = message.UserId, orderId = message.OrderId };

            await notificationMessages.AddAsync(new SignalRMessage
            {
                Target    = "shippingInitiated",
                Arguments = new[] { messageToNotify }
            });
        }
Пример #3
0
        public static async Task Run(
            [ServiceBusTrigger("ordersforshipping", Connection = "ServiceBus")]
            NewOrderMessage message,

            [ServiceBus("shippingsinitiated", Connection = "ServiceBus")]
            IAsyncCollector <ShippingCreatedMessage> shippingCreatedMessages,

            ILogger log)
        {
            log.LogInformation($"CreateShipment ServiceBus topic trigger function processed message: {message}");

            // NOTE: Look at our complex business logic!
            // TODO: Yes - do the REAL STUFF here...
            await Task.Delay(5000);

            var shippingCreated = new ShippingCreatedMessage
            {
                Id      = Guid.NewGuid(),
                Created = DateTime.UtcNow,
                OrderId = message.Order.Id,
                UserId  = message.UserId
            };

            log.LogInformation("New shipment: {0}", shippingCreated);

            try
            {
                await shippingCreatedMessages.AddAsync(shippingCreated);

                await shippingCreatedMessages.FlushAsync();
            }
            catch (ServiceBusException sbx)
            {
                // TODO: retry policy...
                log.LogError(sbx, "Service Bus Error");

                throw;
            }
        }
        public async Task Run(
            [ServiceBusTrigger("shippingsinitiated", Connection = "ServiceBus")]
            /*ShippingCreatedMessage*/ string msg,

            [SignalR(HubName = "shippingsHub", ConnectionStringSetting = "SignalR")]
            IAsyncCollector <SignalRMessage> notificationMessages,

            ILogger log)
        {
            log.LogInformation($"NotifyClientsAboutOrderShipment SB queue trigger function processed message: {msg}");

            ShippingCreatedMessage message = JsonConvert.DeserializeObject <ShippingCreatedMessage>(msg);

            // TODO: Use group feature in SignalR binding
            var messageToNotify = new { userId = message.UserId, orderId = message.OrderId };

            await notificationMessages.AddAsync(new SignalRMessage
            {
                Target    = "shippingInitiated",
                Arguments = new[] { messageToNotify }
            });
        }