class Pheromone::Messaging::Message

Attributes

blob[R]
metadata[R]
options[R]
topic[R]

Public Class Methods

new(topic:, blob:, metadata: {}, options: {}, encoder:, message_format:, embed_blob:) click to toggle source
# File lib/pheromone/messaging/message.rb, line 5
def initialize(topic:, blob:, metadata: {}, options: {}, encoder:, message_format:, embed_blob:)
  @topic = topic
  @blob = blob
  @options = options || {}
  @metadata = metadata || {}
  @encoder = encoder
  @message_format = message_format
  @embed_blob = embed_blob
end

Public Instance Methods

send!() click to toggle source
# File lib/pheromone/messaging/message.rb, line 17
def send!
  WaterDrop::SyncProducer.call(
    MessageFormatter.new(
      message,
      @encoder,
      @message_format
    ).format,
    { topic: topic.to_s }.merge!(options)
  )
end

Private Instance Methods

message() click to toggle source
# File lib/pheromone/messaging/message.rb, line 30
def message
  if @embed_blob
    @metadata.merge!(blob: @blob)
  else
    { metadata: @metadata, blob: @blob }
  end
end