class Maitredee::Publisher
Inherit from this class to easily publish messages:
class RecipePublisher < Maitredee::Publisher publish_defaults( topic_name: :default_topic, event_name: :optional_default_event_name, schema_name: :default_schema ) attr_reader :recipe def initialize(recipe) @recipe = recipe end def process publish( topic_name: :my_topic_override, event_name: :event_name_is_optional, schema_name: :schema_name, primary_key: "optionalKey", body: { id: recipe.id, name: recipe.name } ) end end
Then in your Rails app, you can do this:
RecipePublisher.call(1, 2, 3)
Public Class Methods
call(*args)
click to toggle source
call process and return publishes messages @param args [] arguments passed to initialize
# File lib/maitredee/publisher.rb, line 39 def call(*args) publisher = new(*args) publisher.process publisher.published_messages end
get_publish_defaults()
click to toggle source
# File lib/maitredee/publisher.rb, line 57 def get_publish_defaults @publish_defaults end
publish_defaults(topic_name: nil, event_name: nil, schema_name: nil)
click to toggle source
set publish defaults @param topic_name [#to_s, nil] @param event_name [#to_s, nil] @param schema_name [#to_s, nil]
# File lib/maitredee/publisher.rb, line 49 def publish_defaults(topic_name: nil, event_name: nil, schema_name: nil) @publish_defaults = { topic_name: topic_name, event_name: event_name, schema_name: schema_name } end
Public Instance Methods
publish(topic_name: nil, event_name: nil, schema_name: nil, primary_key: nil, body:)
click to toggle source
publish a message with defaults @param topic_name [#to_s, nil] @param event_name [#to_s, nil] @param schema_name [#to_s, nil] @param primary_key [#to_s, nil] @param body [#to_json]
# File lib/maitredee/publisher.rb, line 74 def publish(topic_name: nil, event_name: nil, schema_name: nil, primary_key: nil, body:) defaults = self.class.get_publish_defaults published_messages << Maitredee.publish( topic_name: topic_name || defaults[:topic_name], event_name: event_name || defaults[:event_name], schema_name: schema_name || defaults[:schema_name], primary_key: primary_key, body: body ) end
published_messages()
click to toggle source
array of messages published in this instance @return [Array<PublisherMessage>]
# File lib/maitredee/publisher.rb, line 64 def published_messages @published_messages ||= [] end