Module: Messaging::Message
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/messaging/message.rb,
lib/messaging/message/from_json.rb
Defined Under Namespace
Modules: ClassMethods
Classes: FromJson
Instance Method Summary
collapse
Instance Method Details
#as_json(*_args) ⇒ Object
74
75
76
|
# File 'lib/messaging/message.rb', line 74
def as_json(*_args)
attributes_as_json.merge(stream_position: stream_position)
end
|
#attributes_as_json(*_args) ⇒ Object
We do our own conversion for datetimes as by default they will only be stored with microseconds, which makes us loose precision when we serialize to json and back to message objects
70
71
72
|
# File 'lib/messaging/message.rb', line 70
def attributes_as_json(*_args)
attributes.transform_values { |v| v.respond_to?(:nsec) ? v.iso8601(9) : v }
end
|
#key_attribute ⇒ Object
82
83
84
|
# File 'lib/messaging/message.rb', line 82
def key_attribute
self.class.key_attribute
end
|
#message_key ⇒ Object
78
79
80
|
# File 'lib/messaging/message.rb', line 78
def message_key
attributes[key_attribute&.to_sym]
end
|
#message_type ⇒ Object
107
108
109
|
# File 'lib/messaging/message.rb', line 107
def message_type
self.class.to_s
end
|
#publish ⇒ Object
111
112
113
|
# File 'lib/messaging/message.rb', line 111
def publish
Messaging::Publish.(message: self)
end
|
#stream_category ⇒ Object
95
96
97
98
99
|
# File 'lib/messaging/message.rb', line 95
def stream_category
return unless stream_name
stream_name.split('$').first
end
|
#stream_id ⇒ Object
101
102
103
104
105
|
# File 'lib/messaging/message.rb', line 101
def stream_id
return unless stream_name
stream_name.split('$').last
end
|
#stream_name ⇒ Object
90
91
92
93
|
# File 'lib/messaging/message.rb', line 90
def stream_name
nil
end
|
#topic ⇒ Object
86
87
88
|
# File 'lib/messaging/message.rb', line 86
def topic
self.class.topic
end
|