Module: Emque::Producing::Message
- Defined in:
- lib/emque/producing/message/message.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- InvalidMessageError =
Class.new(StandardError)
- MessagesNotSentError =
Class.new(StandardError)
Class Method Summary collapse
Instance Method Summary collapse
- #add_metadata ⇒ Object
- #invalid_attributes ⇒ Object
- #message_type ⇒ Object
- #publish(publisher = Emque::Producing.publisher) ⇒ Object
- #to_json ⇒ Object
- #topic ⇒ Object
- #valid? ⇒ Boolean
Class Method Details
.included(base) ⇒ Object
38 39 40 41 42 |
# File 'lib/emque/producing/message/message.rb', line 38 def self.included(base) base.extend(ClassMethods) base.send(:include, Virtus.model) base.send(:attribute, :partition_key, String, :default => nil, :required => false) end |
Instance Method Details
#add_metadata ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/emque/producing/message/message.rb', line 44 def { :metadata => { :host => host_name, :app => app_name, :topic => topic, :created_at => formatted_time, :uuid => uuid, :type => , :partition_key => partition_key } }.merge(public_attributes) end |
#invalid_attributes ⇒ Object
71 72 73 74 75 76 77 |
# File 'lib/emque/producing/message/message.rb', line 71 def invalid_attributes invalid_attrs = self.class.attribute_set.inject([]) do |attrs, attr| attrs << attr.name if attr.required? && self.attributes.fetch(attr.name).nil? attrs end Array(invalid_attrs) - self.class.private_attrs end |
#message_type ⇒ Object
63 64 65 |
# File 'lib/emque/producing/message/message.rb', line 63 def self.class. end |
#publish(publisher = Emque::Producing.publisher) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/emque/producing/message/message.rb', line 84 def publish(publisher=Emque::Producing.publisher) log "publishing...", true if valid? log "valid...", true if Emque::Producing.configuration. sent = publisher.publish(topic, , to_json, partition_key) log "sent #{sent}" raise MessagesNotSentError.new unless sent end else log "failed...", true raise InvalidMessageError.new() end end |
#to_json ⇒ Object
79 80 81 82 |
# File 'lib/emque/producing/message/message.rb', line 79 def to_json data = self. Oj.dump(data, :mode => :compat) end |
#topic ⇒ Object
59 60 61 |
# File 'lib/emque/producing/message/message.rb', line 59 def topic self.class.read_topic end |
#valid? ⇒ Boolean
67 68 69 |
# File 'lib/emque/producing/message/message.rb', line 67 def valid? invalid_attributes.empty? && topic && end |