Metadata retrieves the metadata from a JetStream message. This method will return an error for non-JetStream Msgs.
()
| 3707 | // Metadata retrieves the metadata from a JetStream message. This method will |
| 3708 | // return an error for non-JetStream Msgs. |
| 3709 | func (m *Msg) Metadata() (*MsgMetadata, error) { |
| 3710 | if err := m.checkReply(); err != nil { |
| 3711 | return nil, err |
| 3712 | } |
| 3713 | |
| 3714 | tokens, err := parser.GetMetadataFields(m.Reply) |
| 3715 | if err != nil { |
| 3716 | return nil, err |
| 3717 | } |
| 3718 | |
| 3719 | meta := &MsgMetadata{ |
| 3720 | Domain: tokens[parser.AckDomainTokenPos], |
| 3721 | NumDelivered: parser.ParseNum(tokens[parser.AckNumDeliveredTokenPos]), |
| 3722 | NumPending: parser.ParseNum(tokens[parser.AckNumPendingTokenPos]), |
| 3723 | Timestamp: time.Unix(0, int64(parser.ParseNum(tokens[parser.AckTimestampSeqTokenPos]))), |
| 3724 | Stream: tokens[parser.AckStreamTokenPos], |
| 3725 | Consumer: tokens[parser.AckConsumerTokenPos], |
| 3726 | } |
| 3727 | meta.Sequence.Stream = parser.ParseNum(tokens[parser.AckStreamSeqTokenPos]) |
| 3728 | meta.Sequence.Consumer = parser.ParseNum(tokens[parser.AckConsumerSeqTokenPos]) |
| 3729 | return meta, nil |
| 3730 | } |
| 3731 | |
| 3732 | // AckPolicy determines how the consumer should acknowledge delivered messages. |
| 3733 | type AckPolicy int |