Class: JetstreamBridge::MessageContext
- Inherits:
-
Struct
- Object
- Struct
- JetstreamBridge::MessageContext
- Defined in:
- lib/jetstream_bridge/consumer/message_processor.rb
Overview
Immutable per-message metadata extracted from a NATS message.
Instance Attribute Summary collapse
-
#consumer ⇒ String?
readonly
Consumer name.
-
#deliveries ⇒ Integer
readonly
Number of delivery attempts.
-
#event_id ⇒ String
readonly
Event identifier (from nats-msg-id header or generated UUID).
-
#seq ⇒ Integer?
readonly
Stream sequence number.
-
#stream ⇒ String?
readonly
Stream name.
-
#subject ⇒ String
readonly
NATS subject the message arrived on.
Class Method Summary collapse
-
.build(msg) ⇒ MessageContext
Build a MessageContext from a raw NATS message.
Instance Attribute Details
#consumer ⇒ String? (readonly)
Returns Consumer name.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 25 MessageContext = Struct.new( :event_id, :deliveries, :subject, :seq, :consumer, :stream, keyword_init: true ) do # Build a MessageContext from a raw NATS message. # # @param msg [NATS::Msg] Raw NATS message # @return [MessageContext] def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end end |
#deliveries ⇒ Integer (readonly)
Returns Number of delivery attempts.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 25 MessageContext = Struct.new( :event_id, :deliveries, :subject, :seq, :consumer, :stream, keyword_init: true ) do # Build a MessageContext from a raw NATS message. # # @param msg [NATS::Msg] Raw NATS message # @return [MessageContext] def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end end |
#event_id ⇒ String (readonly)
Returns Event identifier (from nats-msg-id header or generated UUID).
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 25 MessageContext = Struct.new( :event_id, :deliveries, :subject, :seq, :consumer, :stream, keyword_init: true ) do # Build a MessageContext from a raw NATS message. # # @param msg [NATS::Msg] Raw NATS message # @return [MessageContext] def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end end |
#seq ⇒ Integer? (readonly)
Returns Stream sequence number.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 25 MessageContext = Struct.new( :event_id, :deliveries, :subject, :seq, :consumer, :stream, keyword_init: true ) do # Build a MessageContext from a raw NATS message. # # @param msg [NATS::Msg] Raw NATS message # @return [MessageContext] def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end end |
#stream ⇒ String? (readonly)
Returns Stream name.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 25 MessageContext = Struct.new( :event_id, :deliveries, :subject, :seq, :consumer, :stream, keyword_init: true ) do # Build a MessageContext from a raw NATS message. # # @param msg [NATS::Msg] Raw NATS message # @return [MessageContext] def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end end |
#subject ⇒ String (readonly)
Returns NATS subject the message arrived on.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 25 MessageContext = Struct.new( :event_id, :deliveries, :subject, :seq, :consumer, :stream, keyword_init: true ) do # Build a MessageContext from a raw NATS message. # # @param msg [NATS::Msg] Raw NATS message # @return [MessageContext] def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end end |
Class Method Details
.build(msg) ⇒ MessageContext
Build a MessageContext from a raw NATS message.
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/jetstream_bridge/consumer/message_processor.rb', line 33 def self.build(msg) new( event_id: msg.header&.[]('nats-msg-id') || SecureRandom.uuid, deliveries: msg.&.num_delivered.to_i, subject: msg.subject, seq: msg.&.sequence, consumer: msg.&.consumer, stream: msg.&.stream ) end |