Пример #1
0
        private async Task ProcessCreateProdutoMessagesAsync(Message message, CancellationToken token)
        {
            var produto = JsonConvert.DeserializeObject <CreateProdutoRequest>(Encoding.UTF8.GetString(message.Body));
            await _produtoAppService.Create(produto);

            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
Пример #2
0
        //public override Task StartAsync(CancellationToken cancellationToken)
        // {
        //   RegisterOnMessageHandlerAndReceiveMessages().GetAwaiter().GetResult();
        //return base.StartAsync(cancellationToken);
        // }
        private async Task ProcessMessagesAsync(Message message, CancellationToken token)
        {
            var myPayload = JsonConvert.DeserializeObject <AuditMessagePayload>(Encoding.UTF8.GetString(message.Body));

            _processData.Process(myPayload).GetAwaiter().GetResult();
            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
Пример #3
0
        private async Task ProcessMessagesAsync(Message message, CancellationToken token)
        {
            try
            {
                var bodyText = Encoding.UTF8.GetString(message.Body);
                var result   = await ProcessMessage(bodyText, token);

                switch (result.Status)
                {
                case CommandExecutionStatus.Success:
                    await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);

                    break;

                case CommandExecutionStatus.Failure:
                    await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);

                    Console.WriteLine($"Failure while processing command, message '{result.ErrorMessage}', error reason: {result.ErrorReason}");
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"Exception occured in service {Options.ServiceId} while processing message, exception: {e}, message text: {Encoding.UTF8.GetString(message.Body)}");
            }
        }
Пример #4
0
        private async Task OnMessageAsync(Message message, CancellationToken cancellationToken, IMediator mediator)
        {
            try
            {
                var payload = JObject.Parse(Encoding.UTF8.GetString(message.Body));
                var command = MapEvent(message.Label, payload);
                if (command != null)
                {
                    if (command is IRequest)
                    {
                        await mediator.Send((IRequest)command, cancellationToken);
                    }
                    else if (command is IRequest <int> )
                    {
                        await mediator.Send((IRequest <int>) command, cancellationToken);
                    }
                    else
                    {
                        logger.LogWarning($"Unsupported command type: {command.GetType()}");
                    }
                }

                await client.CompleteAsync(message.SystemProperties.LockToken);
            }
            catch (BusinessException ex)
            {
                logger.LogError($"Business exception occurred processing integration event. Details: {ex}");
                await client.CompleteAsync(message.SystemProperties.LockToken);
            }
            catch (Exception ex)
            {
                logger.LogError($"Unexpected error occurred processing integration event. Details: {ex}");
                await client.AbandonAsync(message.SystemProperties.LockToken);
            }
        }
        private void RegisterOnMessageHandlerAndReceiveMessages <TResult>(Func <TResult, Task> callBack)
        {
            var messageHandlerOptions = new MessageHandlerOptions(ExceptionRecievedHanlder)
            {
                MaxConcurrentCalls = _serviceBusConfiguration.Topic.Subscription.MaxConcurrentCalls,
                AutoComplete       = _serviceBusConfiguration.Topic.Subscription.AutoComplete
            };

            _subscriptionClient.RegisterMessageHandler(async(message, token) =>
            {
                var result = JsonConvert.DeserializeObject <TResult>(Encoding.UTF8.GetString(message.Body));
                await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                await callBack(result);
            }, messageHandlerOptions);
        }
Пример #6
0
        async Task ProcessMessageAsync(Message message, CancellationToken cancellationToken)
        {
            Progress?.Invoke(this, new ProgressEventArgs {
                Message = $"Received message id {message.MessageId}"
            });
            if (message.UserProperties.TryGetValue(Constants.KeyName, out var name) && name is string nameValue)
            {
                if (message.UserProperties.TryGetValue(Constants.KeyId, out var id) && id is long idValue &&
                    message.UserProperties.TryGetValue(Constants.KeyTaskType, out var taskType) && taskType is string taskTypeValue &&
                    message.UserProperties.TryGetValue(Constants.KeyType, out var type) && type is int typeValue &&
                    message.UserProperties.TryGetValue(Constants.KeyOperation, out var operation) && operation is int operationValue &&
                    message.UserProperties.TryGetValue(Constants.KeyResourceId, out var resourceIds) && resourceIds is string resourceIdsValue &&
                    message.UserProperties.TryGetValue(Constants.KeyCreatedDate, out var createdDate) && createdDate is DateTime createdDateValue &&
                    message.UserProperties.TryGetValue(Constants.KeyPayload, out var payload))
                {
                    var request = new SyncRequest {
                        Id = idValue, Type = typeValue, Operation = (Operation)operationValue, ResourceIds = Serializer.DeserializeText <List <object> >(resourceIdsValue), CreatedDate = createdDateValue
                    };
                    var result = onRequest(request, payload);
                    if (!result.IsSuccessful)
                    {
                        Progress?.Invoke(this, new ProgressEventArgs {
                            Message = $"Failed to process request for task {name}", Request = request
                        });
                    }

                    await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                }
                else
                {
                    Progress?.Invoke(this, new ProgressEventArgs {
                        Message = $"Missing request info find task {name}"
                    });
                }
            }
        private static async Task ReceiveMessages_FromTopicSubscriptionsAsync(SubscriptionClient client, CancellationToken token, Color color)
        {
            var doneReceiving = new TaskCompletionSource <bool>();

            token.Register(
                async() => {
                await client.CloseAsync();
                doneReceiving.SetResult(true);
            }
                );

            client.RegisterMessageHandler(
                async(message, token1) =>
            {
                try
                {
                    if (ProcessMessages(message, color))
                    {
                        await client.CompleteAsync(message.SystemProperties.LockToken);
                    }
                    else
                    {
                        await client.DeadLetterAsync(message.SystemProperties.LockToken, "Message is of the wrong type", "Cannot deserialize this message as the type in the Label prop is unknown.");
                    }
                }
                catch (Exception ex)
                {
                    Log.Error($"[{message.MessageId}] -- {ex.Message}");
                }
            },
                GetDefaultMessageHandlingOptions());

            await doneReceiving.Task;
        }
        private static async Task HandleNewMessage(Message receivedMessage, SubscriptionClient subscriptionClient, CancellationToken cancellationToken, ILogger logger)
        {
            if (receivedMessage == null)
            {
                return;
            }

            logger.LogInformation("Message '{messageId}' was received", receivedMessage.MessageId);

            string rawReceivedEvents = string.Empty;

            try
            {
                rawReceivedEvents = Encoding.UTF8.GetString(receivedMessage.Body);
                EventsReceived(rawReceivedEvents, logger);

                await subscriptionClient.CompleteAsync(receivedMessage.SystemProperties.LockToken).ConfigureAwait(continueOnCapturedContext: false);

                logger.LogInformation("Message '{messageId}' was successfully handled", receivedMessage.MessageId);
            }
            catch (Exception ex)
            {
                logger.LogError("Failed to persist raw events with exception '{exceptionMessage}'. Payload: {rawEventsPayload}", ex.Message, rawReceivedEvents);
            }
        }
Пример #9
0
        private async Task MessageHandler(Message message, CancellationToken cancellationToken)
        {
            var jsonString = Encoding.UTF8.GetString(message.Body);

            RaiseMessageReadyEvent?.Invoke(this, jsonString);
            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
        public Task StartAsync(CancellationToken cancellationToken)
        {
            string             serviceBusTopicConnectionString = _configuration["ConnectionStrings:ServiceBusTopic"];
            string             topicName          = _configuration["ServiceBusTopicName"];
            string             _subscriptionName  = _configuration["ServiceBusTopicSubscriptionName"];
            SubscriptionClient subscriptionClient = new SubscriptionClient(serviceBusTopicConnectionString, topicName, _subscriptionName);

            subscriptionClient.RegisterMessageHandler(
                async(m, c) =>
            {
                var bytes    = m.Body;
                var json     = Encoding.UTF8.GetString(bytes);
                var content  = JsonConvert.DeserializeObject <ListTrainingResponse>(json);
                var type     = content.ResponseType;
                var username = content.RunnerUsername;

                switch (type)
                {
                case "ListTrainingResponse":
                    await _hub.Clients.Clients(_registry.ClientIdFromUsername(username)).SendAsync("ListTrainingResponse", content.Activities);
                    break;

                default:
                    break;
                }
                await subscriptionClient.CompleteAsync(m.SystemProperties.LockToken);
            },
                new Func <ExceptionReceivedEventArgs, Task>(async(e) =>
            {
            }));
            return(Task.CompletedTask);
        }
Пример #11
0
        private async Task ReceiveMessage(Message message, CancellationToken cancellationToken)
        {
            if (message != null && _nodeId != null)
            {
                _logger?.LogDebug(Resources.AzureServiceBus_Debug_MessageReceived, _topicName, _nodeId, message.MessageId);

                try
                {
                    if (message.UserProperties.ContainsKey(SubscriptionPingPropertyName))
                    {
                        ProcessSubscriptionIsAliveMessage(message);
                    }
                    else
                    {
                        var nodeMessage = MessageConverter.ConvertToNodeMessage(message);
                        _observableMessages.OnNext(nodeMessage);
                    }

                    await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);

                    _logger?.LogInformation(Resources.AzureServiceBus_Info_MessageProcessed, _topicName, _nodeId, message.MessageId);
                }
                catch (Exception ex)
                {
                    _logger?.LogError(ex, Resources.AzureServiceBus_Error_MessageError, _topicName, _nodeId, message.MessageId);
                    await _subscriptionClient.AbandonAsync(message.SystemProperties.LockToken);
                }
            }
        }
Пример #12
0
        private void RegisterSubscriptionClientMessageHandler(SubscriptionClient subscriptionClient)
        {
            subscriptionClient.RegisterMessageHandler(
                async(message, token) =>
            {
                _log.Trace($"Received Message {message.MessageId} {message.Label} for {subscriptionClient.ServiceBusConnection.Endpoint}");

                if (!token.IsCancellationRequested && !subscriptionClient.IsClosedOrClosing)
                {
                    await OnMessageReceived(message);
                    // Complete the message so that it is not received again.
                    await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                }
                else
                {
                    _log.Warn($"SubscriptionClient MessageReceived CancellationRequested or IsClosedOrClosing");
                    await subscriptionClient.AbandonAsync(message.SystemProperties.LockToken);
                }
            },
                new MessageHandlerOptions(ExceptionReceivedHandler)
            {
                MaxConcurrentCalls   = 20,
                AutoComplete         = false,
                MaxAutoRenewDuration = TimeSpan.FromSeconds(60)
            });
        }
Пример #13
0
        public async Task <MagnetMessage> GetNextAsync(string name, CancellationToken cancellationToken)
        {
            var client     = new SubscriptionClient(_options.ConnectionString, _options.Topic, name);
            var completion = new TaskCompletionSource <MagnetMessage>();

            cancellationToken.Register(() => completion.SetCanceled());

            try
            {
                client.RegisterMessageHandler(async(message, token) =>
                {
                    string json             = Encoding.UTF8.GetString(message.Body);
                    MagnetMessage magnetMsg = JsonConvert.DeserializeObject <MagnetMessage>(json);
                    await client.CompleteAsync(message.SystemProperties.LockToken);
                    await client.CloseAsync();
                    completion.SetResult(magnetMsg);
                },
                                              new MessageHandlerOptions(ExceptionReceivedHandler)
                {
                    MaxConcurrentCalls = 1, AutoComplete = false
                });
            }
            catch (Exception ex)
            {
                completion.SetException(ex);
            }
            return(await completion.Task);
        }
Пример #14
0
        private static async Task OnMessageReceived(Message payload, CancellationToken cancellationToken)
        {
            string message = Encoding.UTF8.GetString(payload.Body);

            Console.WriteLine($"[*] {message}");
            await _subscriptionClient.CompleteAsync(payload.SystemProperties.LockToken);
        }
        /// <summary>
        /// Process messages
        /// </summary>
        /// <param name="message"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        private async Task ProcessMessages(Message message, CancellationToken token)
        {
            var data = JsonConvert.DeserializeObject <dynamic>(Encoding.UTF8.GetString(message.Body));
            await _processor.ProcessData(data);

            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
        private async Task ProcessMessageAsync(Message message, CancellationToken cancellationToken)
        {
            Console.WriteLine(
                $"Received message: SequenceNumber: {message.SystemProperties.SequenceNumber} Body: {Encoding.UTF8.GetString(message.Body)}");

            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
Пример #17
0
        public void Start(IEnumerable <SubscriptionListenerConfig> subscriptionListenerConfig)
        {
            var subscriptionClient = new SubscriptionClient(
                "Endpoint=sb://asos-pim-eun-bus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=vDfWcAqx/kwUf1I6LsK6dYVQ56/SswsvAM9EpICv3Lo=",
                "pim.adapter.spike",
                "sizing.spike");

            subscriptionClient.RegisterMessageHandler(async(message, token) =>
            {
                Console.WriteLine($"Received message: SequenceNumber:{message.SystemProperties.SequenceNumber} Body:{Encoding.UTF8.GetString(message.Body)}");
                await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
            }, ExceptionReceivedHandler);

            //foreach (var config in subscriptionListenerConfig)
            //{


            //    var subscriptionClient = new SubscriptionClient(
            //        config.ServiceBusConnectionString,
            //        config.TopicName,
            //        config.SubscriptionName);

            //    subscriptionClient.RegisterMessageHandler(async (message, token) =>
            //    {
            //        await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
            //    }, ExceptionReceivedHandler);
            //}
        }
Пример #18
0
        private void RegisterSubscriptionClientMessageHandler()
        {
            _subscriptionClient.RegisterMessageHandler(
                async(message, token) =>
            {
                var responseId = message.CorrelationId;
                var eventType  = (EventType)Enum.Parse(typeof(EventType), message.UserProperties[ServiceBusConstants.UserPropertyEventType] as string);
                //var eventName = (EventName)Enum.Parse(typeof(EventName), message.UserProperties[ServiceBusConstants.UserPropertyEventName] as string);
                var eventName           = (EventName)Enum.Parse(typeof(EventName), message.Label as string);
                var eventIndexInFlowMap = Int32.Parse(message.UserProperties[ServiceBusConstants.UserPropertyEventIndexInFlowMap].ToString());
                var messageData         = Encoding.UTF8.GetString(message.Body);
                var payLoad             = JsonConvert.DeserializeObject <BasePayLoad>(messageData);

                SedaEvent sedaEvent = new SedaEvent(
                    responseId,
                    eventType,
                    payLoad,
                    eventName,
                    eventIndexInFlowMap
                    );

                await this._messageProcessor.ProcessMessageAsync(sedaEvent);
                // Complete the message so that it is not received again.
                await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
            },
                new MessageHandlerOptions(ExceptionReceivedHandler)
            {
                MaxConcurrentCalls = this._azureServiceBusSettings.MaxConcurrentCalls, AutoComplete = false
            });
        }
        private static async Task ReceiveMessages_FromTopicDeadLetterSubscriptions(MessageSender sender, SubscriptionClient client, CancellationToken token, ConsoleColor color)
        {
            var doneReceiving = new TaskCompletionSource <bool>();

            token.Register(
                async() =>
            {
                await client.CloseAsync();
                doneReceiving.SetResult(true);
            });

            client.RegisterMessageHandler(
                async(message, token1) =>
            {
                try
                {
                    var resubmitMessage = message.Clone();

                    resubmitMessage.MessageId = $"{resubmitMessage.MessageId}|{Guid.NewGuid()}";

                    await sender.SendAsync(resubmitMessage);
                    await client.CompleteAsync(message.SystemProperties.LockToken);

                    Utils.ConsoleWrite($"[{message.MessageId}] -- Placed back in topic.\n", ConsoleColor.Blue, color);
                }
                catch (Exception ex)
                {
                    Log.Error($"[{message.MessageId}] -- {ex.Message}");
                    await client.AbandonAsync(message.SystemProperties.LockToken);
                }
            },
                GetDefaultMessageHandlingOptions());

            await doneReceiving.Task;
        }
Пример #20
0
        private async Task ProcessMessagesAsync(Message message, CancellationToken token)
        {
            var user = JsonConvert.DeserializeObject <User>(Encoding.UTF8.GetString(message.Body));

            _processData.Process(user);
            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
        public static async Task Main(string[] args)
        {
            var subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, TopicName, SubscriptionName);

            var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler);

            messageHandlerOptions.AutoComplete = false;

            subscriptionClient.RegisterMessageHandler((message, cancellationToken) =>
            {
                Console.WriteLine($"UserName: {message.UserProperties["UserName"]}");
                Console.WriteLine($"Stage: {message.UserProperties["Stage"]}");
                Console.WriteLine($"ContentType: {message.ContentType}");
                Console.WriteLine($"CorrelationId: {message.CorrelationId}");

                Console.WriteLine(Encoding.UTF8.GetString(message.Body));
                subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                Console.WriteLine();
                return(Task.CompletedTask);
            }
                                                      , messageHandlerOptions);

            Console.ReadLine();
            await subscriptionClient.CloseAsync();
        }
Пример #22
0
        private async Task ProcessEvent(Message message, CancellationToken cancellationToken)
        {
            var eventTypeName = message.Label;
            var eventType     = typeof(AzureEventBus).Assembly.GetTypes().FirstOrDefault(x => x.Name == eventTypeName);

            var eventHandlerType = typeof(IntegrationEventHandler <>).MakeGenericType(eventType);
            var handler          = _serviceProvider.GetService(eventHandlerType);

            if (!_subscribedEvents.Contains(eventTypeName) || handler == null)
            {
                _logger.LogWithProps(LogLevel.Critical,
                                     $"Unable to process {eventTypeName} because there is no corresponding handler");
                return;
            }

            var integrationEventStr = Encoding.UTF8.GetString(message.Body);
            var integrationEvent    = JsonConvert.DeserializeObject(integrationEventStr, eventType);

            const string methodName = nameof(IntegrationEventHandler <IntegrationEvent> .Handle);
            var          method     = eventHandlerType.GetMethod(methodName);

            await(Task) method.Invoke(handler, new[] { integrationEvent });

            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
Пример #23
0
        private static void DoClientWork(IClusterClient client)
        {
            var subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, "accountTransferUpdates", "orleansSubscription");

            subscriptionClient.PrefetchCount = 1000;

            try
            {
                subscriptionClient.RegisterMessageHandler(
                    async(message, token) =>
                {
                    var messageJson   = Encoding.UTF8.GetString(message.Body);
                    var updateMessage = JsonConvert.DeserializeObject <AccountTransferMessage>(messageJson);

                    await client.GetGrain <IAccountGrain>(updateMessage.From).Withdraw(updateMessage.Amount);
                    await client.GetGrain <IAccountGrain>(updateMessage.To).Deposit(updateMessage.Amount);

                    await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                },
                    new MessageHandlerOptions(async args => Console.WriteLine(args.Exception + ", stack trace: " + args.Exception.StackTrace))
                {
                    MaxConcurrentCalls = 1, AutoComplete = false
                });
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
        }
Пример #24
0
        public void Receive()
        {
            var subscriptionClient = new SubscriptionClient(ServiceBusConnectionString, "productRatingUpdates", "sampleSubscription");

            try
            {
                subscriptionClient.RegisterMessageHandler(
                    async(message, token) =>
                {
                    var messageJson   = Encoding.UTF8.GetString(message.Body);
                    var updateMessage = JsonConvert.DeserializeObject <ProductRatingUpdateMessage>(messageJson);

                    Console.WriteLine($"Received message with productId: {updateMessage.ProductId}");

                    await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
                },
                    new MessageHandlerOptions(async args => Console.WriteLine(args.Exception))
                {
                    MaxConcurrentCalls = 1, AutoComplete = false
                });
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: " + e.Message);
            }
        }
Пример #25
0
        private void RegisterSubscriptionClientMessageHandler()
        {
            _subscriptionClient.RegisterMessageHandler(
                async(message, token) =>
            {
                SedaEvent sedaEvent           = new SedaEvent();
                sedaEvent.ResponseId          = message.CorrelationId;
                sedaEvent.To                  = (SedaService)Enum.Parse(typeof(SedaService), message.To);
                sedaEvent.From                = (SedaService)Enum.Parse(typeof(SedaService), message.UserProperties[UserPropertyFrom] as string);
                sedaEvent.CmsOperation        = (CmsOperation)Enum.Parse(typeof(CmsOperation), message.UserProperties[UserPropertyCmsOperation] as string);
                sedaEvent.EventType           = (EventType)Enum.Parse(typeof(EventType), message.UserProperties[UserPropertyEventType] as string);
                sedaEvent.Priority            = (Priority)Enum.Parse(typeof(Priority), message.UserProperties[UserPropertyPriority] as string);
                sedaEvent.EventName           = (EventName)Enum.Parse(typeof(EventName), message.UserProperties[UserPropertyEventName] as string);
                sedaEvent.EventIndexInFlowMap = Int32.Parse(message.UserProperties[UserPropertyEventIndexInFlowMap].ToString());
                var messageData               = Encoding.UTF8.GetString(message.Body);
                sedaEvent.PayLoad             = JsonConvert.DeserializeObject <BasePayLoad>(messageData);

                await ProcessEvent(sedaEvent);
                // Complete the message so that it is not received again.
                await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
            },
                new MessageHandlerOptions(ExceptionReceivedHandler)
            {
                MaxConcurrentCalls = this._azureServiceBusSettings.MaxConcurrentCalls, AutoComplete = false
            });
        }
Пример #26
0
        private async Task ProcessMessagesAsync(Message message, CancellationToken token)
        {
            // Deserialize the message to get the original json sent to the producer api
            var simpleMessage = JsonConvert.DeserializeObject <SimpleMessage>(Encoding.UTF8.GetString(message.Body));

            //await _processData.Process(simpleMessage);

            // decide what to communicate back to the service bus
            switch (simpleMessage.MessageType)
            {
            case SimpleMessageType.Complete:
                await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);

                telemetryClient.TrackTrace($"Message with id {message.MessageId} successfully processed");
                break;

            case SimpleMessageType.SendToDlq:
                await subscriptionClient.DeadLetterAsync(message.SystemProperties.LockToken);

                telemetryClient.TrackTrace($"Message with id {message.MessageId} sent to DLQ");
                break;

            case SimpleMessageType.Error:
                // increments the delivery count
                throw new InvalidOperationException("Cannot process message");

            default:
                // increments the delivery count
                await subscriptionClient.AbandonAsync(message.SystemProperties.LockToken);

                telemetryClient.TrackTrace($"Message with id {message.MessageId} abandoned. Retrying shortly...");
                break;
            }
        }
Пример #27
0
        static async void processSub()
        {
            while (true)
            {
                var msg = await m_clientSub.ReceiveAsync();

                if (msg != null)
                {
                    Console.WriteLine($"SUB: {msg.MessageId}");
                    if (msg.DeliveryCount > 1)
                    {
                        Param p = msg.GetBody <Param>();
                        Console.WriteLine($"SUB: {msg.MessageId}, {DateTime.Now.Ticks}: {p.A}, {p.B}");
                        BrokeredMessage msgResp = new BrokeredMessage(p.A - p.B);
                        msgResp.SessionId = msg.ReplyToSessionId;
                        await m_queue.SendAsync(msgResp);

                        await m_clientSub.CompleteAsync(msg.LockToken);
                    }
                    else
                    {
                        Console.WriteLine($"SUB: {msg.MessageId}, Exception, bad processing - {msg.DeliveryCount}");
                    }
                }
            }
        }
Пример #28
0
        private async Task HandleSubscriptionMessage(Message message, CancellationToken cancellationToken)
        {
            var demoMessage = JsonSerializer.Deserialize <DemoMessage>(Encoding.UTF8.GetString(message.Body));

            NewMessage?.Invoke(demoMessage);
            await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }
Пример #29
0
        private async Task ProcessMessageAsync(Message message, CancellationToken cancellationToken)
        {
            if (message.Label != _subName && _applicationCacheService != null)
            {
                switch ((ApplicationCacheMessageType)message.UserProperties["type"])
                {
                case ApplicationCacheMessageType.UpsertOrganizationAbility:
                    var upsertedOrgId = (Guid)message.UserProperties["id"];
                    var upsertedOrg   = await _organizationRepository.GetByIdAsync(upsertedOrgId);

                    if (upsertedOrg != null)
                    {
                        await _applicationCacheService.BaseUpsertOrganizationAbilityAsync(upsertedOrg);
                    }
                    break;

                case ApplicationCacheMessageType.DeleteOrganizationAbility:
                    await _applicationCacheService.BaseDeleteOrganizationAbilityAsync(
                        (Guid)message.UserProperties["id"]);

                    break;

                default:
                    break;
                }
            }
            if (!cancellationToken.IsCancellationRequested)
            {
                await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
            }
        }
Пример #30
0
        private static async Task MessageHandler(Message message, CancellationToken cancellationToken)
        {
            string messageText = Encoding.UTF8.GetString(message.Body);

            Console.WriteLine($"[{DateTime.Now}] ({message.MessageId}) {messageText}");
            await _subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
        }