Class: JetstreamBridge::MessageContext

Inherits:
Struct
  • Object
show all
Defined in:
lib/jetstream_bridge/consumer/message_processor.rb

Overview

Immutable per-message metadata extracted from a NATS message.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#consumerString? (readonly)

Returns Consumer name.

Returns:

  • (String, nil)

    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

#deliveriesInteger (readonly)

Returns Number of delivery attempts.

Returns:

  • (Integer)

    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_idString (readonly)

Returns Event identifier (from nats-msg-id header or generated UUID).

Returns:

  • (String)

    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

#seqInteger? (readonly)

Returns Stream sequence number.

Returns:

  • (Integer, nil)

    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

#streamString? (readonly)

Returns Stream name.

Returns:

  • (String, nil)

    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

#subjectString (readonly)

Returns NATS subject the message arrived on.

Returns:

  • (String)

    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.

Parameters:

  • msg (NATS::Msg)

    Raw NATS message

Returns:



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