Class: KubeMQ::Queues::QueueMessagePolicy

Inherits:
Object
  • Object
show all
Defined in:
lib/kubemq/queues/queue_message.rb

Overview

Delivery policy for queue messages — expiration, delay, and dead-letter settings.

Attach to a QueueMessage via the policy attribute to control when the message becomes visible, when it expires, and where it goes after exceeding the maximum receive count.

Examples:

Dead-letter policy

policy = KubeMQ::Queues::QueueMessagePolicy.new(
  max_receive_count: 3,
  max_receive_queue: "orders.dlq",
  expiration_seconds: 3600
)

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(expiration_seconds: 0, delay_seconds: 0, max_receive_count: 0, max_receive_queue: '') ⇒ QueueMessagePolicy

Returns a new instance of QueueMessagePolicy.

Parameters:

  • expiration_seconds (Integer) (defaults to: 0)

    message TTL in seconds (default: 0)

  • delay_seconds (Integer) (defaults to: 0)

    visibility delay in seconds (default: 0)

  • max_receive_count (Integer) (defaults to: 0)

    max delivery attempts (default: 0)

  • max_receive_queue (String) (defaults to: '')

    dead-letter queue channel (default: "")



36
37
38
39
40
41
# File 'lib/kubemq/queues/queue_message.rb', line 36

def initialize(expiration_seconds: 0, delay_seconds: 0, max_receive_count: 0, max_receive_queue: '')
  @expiration_seconds = expiration_seconds
  @delay_seconds = delay_seconds
  @max_receive_count = max_receive_count
  @max_receive_queue = max_receive_queue
end

Instance Attribute Details

#delay_secondsInteger

Returns delay before the message becomes visible in seconds (default: 0).

Returns:

  • (Integer)

    delay before the message becomes visible in seconds (default: 0)



30
# File 'lib/kubemq/queues/queue_message.rb', line 30

attr_accessor :expiration_seconds, :delay_seconds, :max_receive_count, :max_receive_queue

#expiration_secondsInteger

Returns message TTL in seconds; 0 means no expiration (default: 0).

Returns:

  • (Integer)

    message TTL in seconds; 0 means no expiration (default: 0)



30
31
32
# File 'lib/kubemq/queues/queue_message.rb', line 30

def expiration_seconds
  @expiration_seconds
end

#max_receive_countInteger

Returns max delivery attempts before dead-lettering; 0 means unlimited (default: 0).

Returns:

  • (Integer)

    max delivery attempts before dead-lettering; 0 means unlimited (default: 0)



30
# File 'lib/kubemq/queues/queue_message.rb', line 30

attr_accessor :expiration_seconds, :delay_seconds, :max_receive_count, :max_receive_queue

#max_receive_queueString

Returns dead-letter queue channel name (default: "").

Returns:

  • (String)

    dead-letter queue channel name (default: "")



30
# File 'lib/kubemq/queues/queue_message.rb', line 30

attr_accessor :expiration_seconds, :delay_seconds, :max_receive_count, :max_receive_queue