Module: Pigeon::Outbox

Defined in:
lib/pigeon/outbox.rb

Overview

Outbox-related functionality for Pigeon

Class Method Summary collapse

Class Method Details

.count_outbox_messages_by_status(status) ⇒ Integer

Count outbox messages by status

Parameters:

  • status (String)

    Message status

Returns:

  • (Integer)

    Count of messages with the given status



50
51
52
# File 'lib/pigeon/outbox.rb', line 50

def self.count_outbox_messages_by_status(status)
  outbox_message_adapter.count_by_status(status)
end

.create_outbox_message(attributes = {}) ⇒ Pigeon::Models::OutboxMessage

Create a new outbox message

Parameters:

  • attributes (Hash) (defaults to: {})

    Message attributes

Returns:



21
22
23
# File 'lib/pigeon/outbox.rb', line 21

def self.create_outbox_message(attributes = {})
  outbox_message_adapter.create(attributes)
end

.find_oldest_outbox_message_by_status(status) ⇒ Pigeon::Models::OutboxMessage?

Find the oldest outbox message by status

Parameters:

  • status (String)

    Message status

Returns:



57
58
59
# File 'lib/pigeon/outbox.rb', line 57

def self.find_oldest_outbox_message_by_status(status)
  outbox_message_adapter.find_oldest_by_status(status)
end

.find_outbox_message(id) ⇒ Pigeon::Models::OutboxMessage?

Find an outbox message by ID

Parameters:

  • id (String, Integer)

    Message ID

Returns:



28
29
30
# File 'lib/pigeon/outbox.rb', line 28

def self.find_outbox_message(id)
  outbox_message_adapter.find(id)
end

.find_outbox_messages_by_status(status, limit = 100) ⇒ Array<Pigeon::Models::OutboxMessage>

Find outbox messages by status

Parameters:

  • status (String)

    Message status

  • limit (Integer) (defaults to: 100)

    Maximum number of messages to return

Returns:



36
37
38
# File 'lib/pigeon/outbox.rb', line 36

def self.find_outbox_messages_by_status(status, limit = 100)
  outbox_message_adapter.find_by_status(status, limit)
end

.find_outbox_messages_ready_for_retry(limit = 100) ⇒ Array<Pigeon::Models::OutboxMessage>

Find outbox messages ready for retry

Parameters:

  • limit (Integer) (defaults to: 100)

    Maximum number of messages to return

Returns:



43
44
45
# File 'lib/pigeon/outbox.rb', line 43

def self.find_outbox_messages_ready_for_retry(limit = 100)
  outbox_message_adapter.find_ready_for_retry(limit)
end

.outbox_message_adapterClass

Get the appropriate outbox message adapter based on the framework

Returns:

  • (Class)

    Adapter class



8
9
10
11
12
13
14
15
16
# File 'lib/pigeon/outbox.rb', line 8

def self.outbox_message_adapter
  if defined?(ActiveRecord)
    Models::Adapters::ActiveRecordAdapter
  elsif defined?(ROM) && defined?(Hanami)
    Models::Adapters::RomAdapter
  else
    Models::OutboxMessage
  end
end