Exemple #1
0
 public async Task NotifyAsync(RabbitIndexingMessage rabbitIndexingMessage)
 {
     if (_indexerInstanceSettings.SendEventsToRabbit)
     {
         await _rabbitQueuePublisher.PublshEventAsync(rabbitIndexingMessage);
     }
 }
Exemple #2
0
        public async Task PublshEventAsync(RabbitIndexingMessage rabbitEvent)
        {
            var notificationJson = Newtonsoft.Json.JsonConvert.SerializeObject(rabbitEvent);
            var notification     = Encoding.UTF8.GetBytes(notificationJson);

            try
            {
                string exchangeForEvent;

                switch (rabbitEvent.IndexingMessageType)
                {
                case IndexingMessageType.Block:
                    exchangeForEvent = _settings.RabbitMq.ExchangeEthereumSamuraiBlocks;
                    break;

                case IndexingMessageType.ErcBalances:
                    exchangeForEvent = _settings.RabbitMq.ExchangeEthereumSamuraiErcTransfer;
                    break;

                case IndexingMessageType.ErcContract:
                    exchangeForEvent = _settings.RabbitMq.ExchangeEthereumSamuraiErcContracts;
                    break;

                default:
                    throw new NotSupportedException("Such Event is not supported yet");
                }
                _channel.BasicPublish
                (
                    exchange: exchangeForEvent,
                    routingKey: _settings.RabbitMq.RoutingKey,
                    body: notification
                );
            }
            catch (AlreadyClosedException e) when(e.ShutdownReason?.ReplyCode == 404)
            {
                //TODO:
                throw;
            }
        }