Class: KubeMQ::Queues::QueueMessage

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

Overview

Outbound queue message for point-to-point messaging.

Construct a QueueMessage and send it via KubeMQ::QueuesClient#send_queue_message, KubeMQ::QueuesClient#send_queue_message_stream, or UpstreamSender#publish. Optionally attach a QueueMessagePolicy for expiration, delay, and dead-letter handling.

Examples:

Send a queue message with policy

msg = KubeMQ::Queues::QueueMessage.new(
  channel: "tasks.process",
  body: '{"task_id": 1}',
  metadata: "task",
  tags: { "priority" => "high" },
  policy: KubeMQ::Queues::QueueMessagePolicy.new(
    expiration_seconds: 300,
    max_receive_count: 3,
    max_receive_queue: "tasks.dlq"
  )
)
result = client.send_queue_message(msg)

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(channel:, metadata: nil, body: nil, tags: nil, id: nil, policy: nil) ⇒ QueueMessage

Returns a new instance of QueueMessage.

Parameters:

  • channel (String)

    target queue channel name (required)

  • metadata (String, nil) (defaults to: nil)

    arbitrary metadata

  • body (String, nil) (defaults to: nil)

    message payload

  • tags (Hash{String => String}, nil) (defaults to: nil)

    key-value tags (default: {})

  • id (String, nil) (defaults to: nil)

    message ID (default: auto-generated UUID)

  • policy (QueueMessagePolicy, nil) (defaults to: nil)

    delivery policy (default: nil)



89
90
91
92
93
94
95
96
# File 'lib/kubemq/queues/queue_message.rb', line 89

def initialize(channel:, metadata: nil, body: nil, tags: nil, id: nil, policy: nil)
  @id = id || SecureRandom.uuid
  @channel = channel
  @metadata = 
  @body = body
  @tags = tags || {}
  @policy = policy
end

Instance Attribute Details

#bodyString?

Returns message payload (binary-safe).

Returns:

  • (String, nil)

    message payload (binary-safe)



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

attr_accessor :id, :channel, :metadata, :body, :tags, :policy

#channelString

Returns target queue channel name.

Returns:

  • (String)

    target queue channel name



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

attr_accessor :id, :channel, :metadata, :body, :tags, :policy

#idString

Returns unique message identifier (auto-generated UUID if not provided).

Returns:

  • (String)

    unique message identifier (auto-generated UUID if not provided)



81
82
83
# File 'lib/kubemq/queues/queue_message.rb', line 81

def id
  @id
end

#metadataString?

Returns arbitrary metadata string.

Returns:

  • (String, nil)

    arbitrary metadata string



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

attr_accessor :id, :channel, :metadata, :body, :tags, :policy

#policyQueueMessagePolicy?

Returns delivery policy (expiration, delay, dead-letter).

Returns:



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

attr_accessor :id, :channel, :metadata, :body, :tags, :policy

#tagsHash{String => String}

Returns user-defined key-value tags.

Returns:

  • (Hash{String => String})

    user-defined key-value tags



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

attr_accessor :id, :channel, :metadata, :body, :tags, :policy