in src/DotPulsar/Internal/SubProducer.cs [189:206]
private void ProcessReceipt(CommandSendReceipt sendReceipt)
{
var receiptSequenceId = sendReceipt.SequenceId;
if (!_sendQueue.TryPeek(out var sendOp) || sendOp is null)
throw new ProducerSendReceiptOrderingException($"Received sequenceId {receiptSequenceId} but send queue is empty");
var expectedSequenceId = sendOp.Metadata.SequenceId;
if (receiptSequenceId != expectedSequenceId)
throw new ProducerSendReceiptOrderingException($"Received sequenceId {receiptSequenceId}. Expected {expectedSequenceId}");
_sendQueue.Dequeue();
var srMsgId = sendReceipt.MessageId;
var messageId = _partition == -1 ? srMsgId.ToMessageId() : new MessageId(srMsgId.LedgerId, srMsgId.EntryId, _partition, srMsgId.BatchIndex);
sendOp.ReceiptTcs.TrySetResult(messageId);
}