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(); }
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); }