Exemple #1
0
        private async Task CreateReceiptAsync(MessageHeader header, IssueReceiptCommandContent content)
        {
            var transactionId = header?.TransactionId;

            var   executedTransfer = new ExecutedTransfer(transactionId);
            Event receiptIssued    = executedTransfer.IssueReceipt();

            await repository.AddAsync(executedTransfer);

            await eventProducer.ProduceAsync(receiptIssued);
        }
        private async Task ValidateAsync(MessageHeader header, ValidateTransferCommandContent content)
        {
            var transactionId = header?.TransactionId;
            var transaction   = content?.Transaction;

            var   initialTransfer = new InitialTransfer(transactionId, transaction.AccountFromId, transaction.AccountToId, transaction.Amount);
            Event validationEvent = initialTransfer.ValidateTransfer();

            await repository.AddAsync(initialTransfer);

            await eventProducer.ProduceAsync(validationEvent);
        }
        private async Task CancelTransfer(MessageHeader header, CancelTransferCommandContent content)
        {
            var transactionId = header?.TransactionId;
            var transaction   = content?.Transaction;

            var   initialTransfer  = new InitialTransfer(transactionId, transaction.AccountFromId, transaction.AccountToId, transaction.Amount);
            Event transferCanceled = initialTransfer.CancelTransfer();

            await repository.AddAsync(initialTransfer);

            await eventProducer.ProduceAsync(transferCanceled);
        }
        private async Task CancelTransferAsync(MessageHeader header, CancelTransferCommandContent content)
        {
            var transactionId = header?.TransactionId;
            var transaction   = content?.Transaction;

            var   transfer         = new CheckingAccountTransfer();
            Event tranferCancelled = transfer.CancelTranferAmountBetweenAccounts(transactionId, transaction.AccountFromId, transaction.AccountToId, transaction.Amount);

            foreach (var line in transfer.CheckingAccountLines)
            {
                await repository.AddAsync(line);
            }

            await eventProducer.ProduceAsync(tranferCancelled);
        }
Exemple #5
0
        public async Task SetMarginTradingEnabled(string clientId, bool enabled)
        {
            var settings = await _clientAccountClient.GetMarginEnabledAsync(clientId);

            if (_marginSettings.IsLive)
            {
                settings.EnabledLive = enabled;
            }
            else
            {
                settings.Enabled = enabled;
            }

            await _clientAccountClient.SetMarginEnabledAsync(clientId, settings.Enabled, settings.EnabledLive,
                                                             settings.TermsOfUseAgreed);

            var marginEnabledChangedMessage = new MarginTradingEnabledChangedMessage
            {
                ClientId    = clientId,
                EnabledDemo = settings.Enabled,
                EnabledLive = settings.EnabledLive
            };

            _marginTradingSettingsCacheService.OnMarginTradingEnabledChanged(marginEnabledChangedMessage);
            await _eventsPublisher.ProduceAsync(marginEnabledChangedMessage);
        }
        public Task ProcessNewExternalOrderbookAsync(ExternalExchangeOrderbookMessage orderbook)
        {
            if (string.IsNullOrEmpty(orderbook.AssetPairId) || string.IsNullOrEmpty(orderbook.ExchangeName))
            {
                return(Task.CompletedTask);
            }

            var settings = _settingsService.TryGetAssetPair(orderbook.ExchangeName, orderbook.AssetPairId);

            if (settings == null || (orderbook.Bids?.Count ?? 0) == 0 || (orderbook.Asks?.Count ?? 0) == 0)
            {
                return(Task.CompletedTask);
            }

            orderbook.Bids.RemoveAll(e => e == null || e.Price <= 0 || e.Volume == 0);
            orderbook.Asks.RemoveAll(e => e == null || e.Price <= 0 || e.Volume == 0);
            orderbook.Bids.Sort((a, b) => - a.Price.CompareTo(b.Price));
            orderbook.Asks.Sort((a, b) => a.Price.CompareTo(b.Price));

            var now = _system.UtcNow;
            var externalOrderbook = new ExternalExchangeOrderbookMessage
            {
                AssetPairId  = settings.ResultingAssetPairId,
                ExchangeName = orderbook.ExchangeName,
                Timestamp    = now,
                Bids         = GetOrderbookPositions(orderbook.Bids, settings.Markups.BidMultiplier),
                Asks         = GetOrderbookPositions(orderbook.Asks, settings.Markups.AskMultiplier)
            };

            _watchdogService.OnOrderbookArrived(orderbook.ExchangeName, orderbook.AssetPairId, now);
            WriteStats(orderbook, externalOrderbook, now);
            return(_messageProducer.ProduceAsync(externalOrderbook));
        }
Exemple #7
0
        public async Task WriteAsync(TResponse message)
        {
            if (string.IsNullOrEmpty(_topic))
            {
                throw new NullOrEmptyTopicException(_topic);
            }

            await _producer.ProduceAsync(_topic, _resolveKey(message), message);
        }
Exemple #8
0
        public async Task TrackConfirmedAsync(TrackingToken token)
        {
            if (!token.IsValid)
            {
                return;
            }

            await confirmProducer.ProduceAsync(token.ToString(), new ConfirmMessage { Token = token });
        }
Exemple #9
0
        private async Task RunAsync()
        {
            while (true)
            {
                string newMessage = await producer.ProduceAsync();

                await client.SendAsync("ReceiveAsync", newMessage);
            }
        }
Exemple #10
0
        public UserEventPublisherTests()
        {
            ct = cts.Token;

            A.CallTo(() => producer.ProduceAsync(A <string> ._, A <UserEventMessage> ._, A <CancellationToken> ._))
            .Invokes(call => publishedUserEvents.Add(call.GetArgument <UserEventMessage>(1) !));

            var log = A.Fake <ILogger <UserEventPublisher> >();

            sut = new UserEventPublisher(counters, logStore, eventStore, subscriptionStore, templateStore, userStore, producer, log, randomizer);
        }
        public Task SendAsync(DateTime moment, string type, string sender, string message)
        {
            var slackMessage = new SlackMessageQueueEntity
            {
                Type    = type,
                Message = message,
                Sender  = $"[{moment.ToString(TimestampFormat)}] {sender}",
            };

            return(_queue.ProduceAsync(slackMessage));
        }
Exemple #12
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var count = 0;

            while (!stoppingToken.IsCancellationRequested)
            {
                var sampleMessage = new SampleMessage($"sample-key-{count}", "sample-property");
                await _messageProducer.ProduceAsync(sampleMessage.Key, sampleMessage, stoppingToken);

                var anotherSampleMessage = new AnotherSampleMessage($"another-sample-key-{count}", "another-property");
                await _messageProducer.ProduceAsync(anotherSampleMessage.Key, anotherSampleMessage, stoppingToken);

                var otherSampleMessage = new OtherSampleMessage($"other-sample-key-{count}", "some-other-property");
                await _messageProducer.ProduceAsync(otherSampleMessage.Key, otherSampleMessage, stoppingToken);

                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                await Task.Delay(1000, stoppingToken);

                count++;
            }
        }
Exemple #13
0
        public async Task Handle(PublishEmailNotificationCommand notification, CancellationToken cancellationToken)
        {
            try
            {
                await _emailMessageProducer.ProduceAsync(_configurationSection.GetSection("Topics")["EmailNotifications"], null, notification);

                _publishNotificationLogger.LogInformation("Message producuded to topic " + _configurationSection.GetSection("Topics")["EmailNotifications"]);
            }
            catch (Exception e)
            {
                _publishNotificationLogger.LogError(e.StackTrace);
            }
        }
Exemple #14
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                //order-created
                var fakeOrder = CreateFakeOrder();
                await _orderCreatedProducer.ProduceAsync(fakeOrder, fakeOrder.Id, stoppingToken);

                _logger.LogInformation("Message: {Id}, {CustomerName}, {CartValue}", fakeOrder.Id, fakeOrder.CustomerName, fakeOrder.CartValue);

                _logger.LogInformation("OrderCreatedWorker running at:  {time}", DateTimeOffset.Now);
                await Task.Delay(1000, stoppingToken);
            }
        }
        public async Task HandleMessageAsync(string MessageType, TKey Key, TValue Value)
        {
            try
            {
                string TopicName = _configurationSection.GetSection("MessageTypes")[MessageType];

                await _emailMessageProducer.ProduceAsync(TopicName, Key, Value);

                _messagingServiceLogger.LogInformation("Message producuded to topic " + TopicName);
            }
            catch (Exception e)
            {
                _messagingServiceLogger.LogError(e.StackTrace);
            }
        }
Exemple #16
0
        private async Task PublishAssetUpsertedEvent(Asset asset, string oldMdsCodeIfUpdated = null)
        {
            var evt = new AssetUpsertedEvent
            {
                Asset         = asset,
                EventMetadata = new EventMetadata(
                    eventId: Guid.NewGuid().ToString(),
                    eventCreationDate: DateTime.UtcNow),
                PropertiesPriorValueIfUpdated = new AssetUpdatedProperties
                {
                    UnderlyingMdsCode = oldMdsCodeIfUpdated
                }
            };
            await _assetUpsertedPublisher.ProduceAsync(evt);

            _log.WriteInfo(nameof(LegacyAssetsCacheUpdater), evt, "Published asset upserted event");
        }
Exemple #17
0
        public async Task Handle(Notification notification, CancellationToken cancellationToken)
        {
            try
            {
                var messageConfiguration = new MessageProducerConfiguration
                {
                    Topic = "BookShop.NewRequest.Approved"
                };

                var deliveryResult = await _messageProducer.ProduceAsync(messageConfiguration, notification);

                System.Console.WriteLine($"=> Offset: {deliveryResult?.Offset.Value}");
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
            }
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            int auxValue = 0;

            while (!stoppingToken.IsCancellationRequested)
            {
                //status-updated
                var fakeStatus = CreateFakeStatus(auxValue);
                await _statusUpdatedProducer.ProduceAsync(fakeStatus, fakeStatus.Id, stoppingToken);

                _logger.LogInformation("Message: {Id}, {Status}", fakeStatus.Id, fakeStatus.Status);

                _logger.LogInformation("StatusUpdatedWorker running at: {time}", DateTimeOffset.Now);
                await Task.Delay(1000, stoppingToken);

                auxValue++;
            }
        }
        public async Task SendSettingsChangedEvent(string route, SettingsChangedSourceType sourceType,
                                                   string changedEntityId = null)
        {
            var message = new SettingsChangedEvent
            {
                Route           = route,
                SettingsType    = _convertService.Convert <SettingsChangedSourceType, SettingsTypeContract>(sourceType),
                Timestamp       = _systemClock.UtcNow.DateTime,
                ChangedEntityId = changedEntityId,
            };

            try
            {
                await _settingsChangedMessageProducer.ProduceAsync(message);
            }
            catch (Exception ex)
            {
                _log.WriteError(nameof(EventSender), message.ToJson(), ex);
            }
        }
 public async Task WriteAsync(TResponse message)
 {
     await _producer.ProduceAsync(_resolveKey(message), message);
 }
 public async Task WriteAsync(NetStreamResult <TResponse> result)
 {
     await _producer.ProduceAsync(_resolveKey(result.Message), result.Message, result.Headers);
 }
 public async Task SendEmailAsync(EmailModel model)
 {
     await _producer.ProduceAsync(model);
 }
 public async Task PublshEvent(string rabbitEvent)
 {
     await _publisher.ProduceAsync(rabbitEvent);
 }
Exemple #24
0
 public void Produce(TKey key, TMessage message)
 {
     _producer.ProduceAsync(key, message).Await();
 }