feat: implement jetstream push delivery and heartbeat
This commit is contained in:
31
src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs
Normal file
31
src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using NATS.Server.JetStream.Models;
|
||||
using NATS.Server.JetStream.Storage;
|
||||
|
||||
namespace NATS.Server.JetStream.Consumers;
|
||||
|
||||
public sealed class PushConsumerEngine
|
||||
{
|
||||
public void Enqueue(Queue<PushFrame> queue, StoredMessage message, ConsumerConfig config)
|
||||
{
|
||||
queue.Enqueue(new PushFrame
|
||||
{
|
||||
IsData = true,
|
||||
Message = message,
|
||||
});
|
||||
|
||||
if (config.HeartbeatMs > 0)
|
||||
{
|
||||
queue.Enqueue(new PushFrame
|
||||
{
|
||||
IsHeartbeat = true,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class PushFrame
|
||||
{
|
||||
public bool IsData { get; init; }
|
||||
public bool IsHeartbeat { get; init; }
|
||||
public StoredMessage? Message { get; init; }
|
||||
}
|
||||
Reference in New Issue
Block a user