feat: implement jetstream push delivery and heartbeat
This commit is contained in:
@@ -100,8 +100,20 @@ public sealed class NatsServer : IMessageRouter, ISubListAccess, IDisposable
|
||||
public bool HasRemoteInterest(string subject) => _globalAccount.SubList.HasRemoteInterest(subject);
|
||||
public bool TryCaptureJetStreamPublish(string subject, ReadOnlyMemory<byte> payload, out PubAck ack)
|
||||
{
|
||||
if (_jetStreamPublisher != null)
|
||||
return _jetStreamPublisher.TryCapture(subject, payload, out ack);
|
||||
if (_jetStreamPublisher != null && _jetStreamPublisher.TryCapture(subject, payload, out ack))
|
||||
{
|
||||
if (ack.ErrorCode == null
|
||||
&& _jetStreamConsumerManager != null
|
||||
&& _jetStreamStreamManager != null
|
||||
&& _jetStreamStreamManager.TryGet(ack.Stream, out var streamHandle))
|
||||
{
|
||||
var stored = streamHandle.Store.LoadAsync(ack.Seq, default).GetAwaiter().GetResult();
|
||||
if (stored != null)
|
||||
_jetStreamConsumerManager.OnPublished(ack.Stream, stored);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ack = new PubAck();
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user