Class: Messaging::Adapters::Postgres::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/messaging/adapters/postgres/store.rb

Overview

Message store adapter using Postgres and ActiveRecord. Prefer accessing the message store through Messaging.message_store instead of using it directly.

Examples:

Using Postgres as the default message store adapter:

# Put this in an initializer
Messaging.setup do |config|
  config.message_store.adapter = :postgres
end

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStore

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Should not be used directly. Access the store though Messaging.message_store or Messaging::Adapters::Store



26
27
28
# File 'lib/messaging/adapters/postgres/store.rb', line 26

def initialize
  @streams = Streams.new
end

Instance Attribute Details

#streamsStreams (readonly)

Returns all the streams in the store.

Returns:

  • (Streams)

    all the streams in the store

See Also:



21
22
23
# File 'lib/messaging/adapters/postgres/store.rb', line 21

def streams
  @streams
end

Instance Method Details

#call(message) ⇒ Messaging::Message

Writes the message to Postgres Skips messages that hasn’t defined a stream name We do this to begin with so PG is opt-in per message

Parameters:

Returns:

  • (Messaging::Message)

    A new copy of the message with the stream position added (if persisted)



58
59
60
61
62
# File 'lib/messaging/adapters/postgres/store.rb', line 58

def call(message)
  return message unless message.stream_name

  SerializedMessage.create!(message: message).to_message
end

#messagesSerializedMessage

Access to all messages. Use with caution in production as there are probably a lot of messages so queries could take a long time or timeout.

Examples:

Check that a message has been added to the store with Rspec

expect do
  # Your code that should add a message to the store
end.to change { Messaging.message_store.messages.count }.from(0).to(1)

Returns:



47
48
49
# File 'lib/messaging/adapters/postgres/store.rb', line 47

def messages
  SerializedMessage
end

#stream(name) ⇒ Stream

Get a specific stream by name

Returns:

See Also:



33
34
35
# File 'lib/messaging/adapters/postgres/store.rb', line 33

def stream(name)
  streams[name]
end