public async Task SimplePublish(IFastQueueClient client, string topicName) { await using var publisher = await client.CreatePublisher(topicName, ack => { Console.WriteLine($"(simple) Last persisted SequenceNumber: {ack}"); }); for (int i = 0; i < 1000; i++) { var message = messageGenerator.CreateMessage().Serialize(); var sequenceNumber = await publisher.Publish(message); } }
public async Task PublishBatches(IFastQueueClient client, string topicName) { await using var publisher = await client.CreatePublisherMany(topicName, ack => { Console.WriteLine($"(batches) Last persisted SequenceNumber: {ack}"); }); for (int i = 0; i < 1000; i++) { var messages = new ReadOnlyMemory <byte> [10]; for (int j = 0; j < 10; j++) { messages[j] = messageGenerator.CreateMessage().Serialize(); } var sequenceNumber = await publisher.Publish(messages); } }
public async Task PublishAndWaitUntilAllMessagesAreAcknowledged(IFastQueueClient client, string topicName) { // in the future there will be an extensions for Publisher to do this in a simpler way bool waitingForAck = false; long lastPublishedSequenceNumber = 0; long lastAcknowledgedSequenceNumber = 0; TaskCompletionSource <int> tcs = null; await using var publisher = await client.CreatePublisher(topicName, ack => { Console.WriteLine($"(waiting example) Last persisted SequenceNumber: {ack}"); lastAcknowledgedSequenceNumber = ack; if (waitingForAck) { if (lastPublishedSequenceNumber == ack) { tcs.TrySetResult(0); } } }); for (int i = 0; i < 1000; i++) { var message = messageGenerator.CreateMessage().Serialize(); lastPublishedSequenceNumber = await publisher.Publish(message); } tcs = new TaskCompletionSource <int>(); waitingForAck = true; if (lastAcknowledgedSequenceNumber != lastPublishedSequenceNumber) { await tcs.Task; } Console.WriteLine($"(waiting example) All messages acknowledged"); }
public Task DeleteSubscription(IFastQueueClient client, string topicName, string subscriptionName) { return(client.DeleteSubscription(topicName, subscriptionName, CancellationToken.None)); }
public Task DeleteTopic(IFastQueueClient client, string topicName) { return(client.DeleteTopic(topicName, CancellationToken.None)); }
public Task <ISubscriber> CreateSubscriber(IFastQueueClient client, string topicName, string subscriptionName) { return(client.CreateSubscriber(topicName, subscriptionName, async(sub, ms) => { var arr = ms.ToArray(); Console.WriteLine($"({subscriptionName}) Received: Count {arr.Length}, Range {arr[0].ID} - {arr[^1].ID}, Deserialized IDs {TestMessage.Deserialize(arr[0].Body.Span).ID} - {TestMessage.Deserialize(arr[^1].Body.Span).ID}");