Sha256: 91936294591cfa58c823a0038ec082273caf3f17835b12564c37106e085f804b

Contents?: true

Size: 1011 Bytes

Versions: 34

Compression:

Stored size: 1011 Bytes

Contents

module Messaging
  class Publish
    include MethodObject

    option :message

    option :message_store, default: -> { Messaging.message_store }
    option :dispatcher, default: -> { Messaging.dispatcher }
    option :middlewares, default: -> { Config.dispatcher.middlewares }

    class << self
      # @!method call(message:, stream:)
      #   Publishes the message
      #
      #   This will persist the message first (if given a stream),
      #   if that succeeds it will be dispatched to the configured
      #   dispatcher and all handlers configured in the routes.
      #   @param message [Message] The message to publish
      #   @return [Message] the message just published
    end

    # @see .call
    # @!visibility private
    def call
      persisted_message = message_store.call(message)
      Middleware.run(middlewares, persisted_message) do
        dispatcher.call(persisted_message)
        Messaging.routes.handle persisted_message
      end
      persisted_message
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
messaging-4.0.12 lib/messaging/publish.rb
messaging-4.0.11 lib/messaging/publish.rb
messaging-4.0.10 lib/messaging/publish.rb
messaging-4.0.10.pre lib/messaging/publish.rb
messaging-4.0.9 lib/messaging/publish.rb
messaging-4.0.8 lib/messaging/publish.rb
messaging-4.0.7 lib/messaging/publish.rb
messaging-4.0.6 lib/messaging/publish.rb
messaging-4.0.5 lib/messaging/publish.rb
messaging-4.0.4.pre lib/messaging/publish.rb
messaging-4.0.3.pre lib/messaging/publish.rb
messaging-4.0.2.pre lib/messaging/publish.rb
messaging-4.0.1.pre lib/messaging/publish.rb
messaging-4.0.0.pre lib/messaging/publish.rb
messaging-3.8.2 lib/messaging/publish.rb
messaging-3.8.1 lib/messaging/publish.rb
messaging-3.8.0 lib/messaging/publish.rb
messaging-3.7.3 lib/messaging/publish.rb
messaging-3.7.2 lib/messaging/publish.rb
messaging-3.7.1 lib/messaging/publish.rb