Esempio n. 1
0
        public QBitTopics(QBitNinjaConfiguration configuration)
        {
            _BroadcastedTransactions = new QBitNinjaTopic <BroadcastedTransaction>(configuration.ServiceBus, new TopicCreation(configuration.Indexer.GetTable("broadcastedtransactions").Name)
            {
                EnableExpress = true
            }, new SubscriptionCreation()
            {
                AutoDeleteOnIdle = TimeSpan.FromHours(24.0)
            });

            _AddedAddresses = new QBitNinjaTopic <WalletAddress[]>(configuration.ServiceBus, new TopicCreation(configuration.Indexer.GetTable("walletrules").Name)
            {
                EnableExpress            = true,
                DefaultMessageTimeToLive = TimeSpan.FromMinutes(5.0)
            }, new SubscriptionCreation()
            {
                AutoDeleteOnIdle = TimeSpan.FromHours(24.0)
            });

            _NewBlocks = new QBitNinjaTopic <BlockHeader>(configuration.ServiceBus, new TopicCreation(configuration.Indexer.GetTable("newblocks").Name)
            {
                DefaultMessageTimeToLive = TimeSpan.FromMinutes(5.0),
                EnableExpress            = true
            }, new SubscriptionCreation()
            {
                AutoDeleteOnIdle = TimeSpan.FromHours(24.0)
            });

            _NewTransactions = new QBitNinjaTopic <Transaction>(configuration.ServiceBus, new TopicCreation(configuration.Indexer.GetTable("newtransactions").Name)
            {
                DefaultMessageTimeToLive = TimeSpan.FromMinutes(5.0),
            }, new SubscriptionCreation()
            {
                AutoDeleteOnIdle = TimeSpan.FromHours(24.0),
            });

            _SubscriptionChanges = new QBitNinjaTopic <SubscriptionChange>(configuration.ServiceBus, new TopicCreation(configuration.Indexer.GetTable("subscriptionchanges").Name)
            {
                DefaultMessageTimeToLive = TimeSpan.FromMinutes(5.0),
                EnableExpress            = true
            });

            _SendNotifications = new QBitNinjaQueue <Notify>(configuration.ServiceBus, new QueueCreation(configuration.Indexer.GetTable("sendnotifications").Name)
            {
                RequiresDuplicateDetection          = true,
                DuplicateDetectionHistoryTimeWindow = TimeSpan.FromMinutes(10.0),
            });
            _SendNotifications.GetMessageId = (n) => Hashes.Hash256(Encoding.UTF32.GetBytes(n.Notification.ToString())).ToString();


            _InitialIndexing = new QBitNinjaQueue <BlockRange>(configuration.ServiceBus, new QueueCreation(configuration.Indexer.GetTable("intitialindexing").Name)
            {
                RequiresDuplicateDetection          = true,
                DuplicateDetectionHistoryTimeWindow = TimeSpan.FromMinutes(10.0),
                MaxDeliveryCount = int.MaxValue,
                LockDuration     = TimeSpan.FromMinutes(5.0)
            });
            _InitialIndexing.GetMessageId = (n) => n.ToString();
        }
Esempio n. 2
0
        internal async Task <T> WaitMessageAsync <T>(QBitNinjaTopic <T> topic) where T : class
        {
            var message = await topic.CreateConsumer(new SubscriptionCreation()
            {
                Name = "test" + Guid.NewGuid().ToString().Replace("-", ""),
                DefaultMessageTimeToLive = TimeSpan.FromSeconds(1.0),
                AutoDeleteOnIdle         = TimeSpan.FromMinutes(5.0)
            })
                          .EnsureSubscriptionExists()
                          .ReceiveAsync(TimeSpan.FromSeconds(30.0)).ConfigureAwait(false);

            if (message == null)
            {
                Assert.True(false, "No message received on topic");
            }
            return(message.Body);
        }