Class: PgEventstore::Subscription
- Inherits:
-
Object
- Object
- PgEventstore::Subscription
- Includes:
- Extensions::OptionsExtension
- Defined in:
- lib/pg_eventstore/subscriptions/subscription.rb
Overview
Defines ruby’s representation of subscriptions record.
Constant Summary collapse
- DEFAULT_TIMESTAMP =
Time.at(0).utc.freeze
Instance Attribute Summary collapse
-
#average_event_processing_time ⇒ Float?
A speed of the subscription.
-
#chunk_query_interval ⇒ Integer, ...
Determines how often to pull events for the given Subscription in seconds.
- #created_at ⇒ Time?
-
#current_position ⇒ Integer?
Current Subscription’s position.
- #id ⇒ Integer?
-
#last_chunk_fed_at ⇒ Time?
Shows the time when last time events were fed to the event’s processor.
-
#last_chunk_greatest_position ⇒ Integer?
Shows the greatest global_position of the last event in the last chunk fed to the event’s processor.
-
#last_error ⇒ Hash?
The information about last error caused when processing events by the Subscription.
-
#last_error_occurred_at ⇒ Time?
The time when the last error occurred.
-
#last_restarted_at ⇒ Time?
Last time the Subscription was restarted.
-
#locked_by ⇒ Integer?
The id of subscription manager which obtained the lock of the Subscription.
-
#max_restarts_number ⇒ Integer?
Maximum number of times the Subscription can be restarted.
-
#name ⇒ String?
Subscription’s name.
-
#options ⇒ Hash?
Subscription’s options to be used to query events.
-
#restart_count ⇒ Integer?
The number of Subscription’s restarts after its failure.
-
#set ⇒ String?
Subscription’s set.
-
#state ⇒ String?
Current Subscription’s state.
-
#time_between_restarts ⇒ Integer?
Interval in seconds between retries of failed Subscription.
-
#total_processed_events ⇒ Integer?
Total number of events, processed by this subscription.
- #updated_at ⇒ Time?
Class Method Summary collapse
- .ping_all(subscriptions_set_id, subscriptions) ⇒ void
- .subscription_queries ⇒ PgEventstore::SubscriptionQueries
Instance Method Summary collapse
- #==(other) ⇒ Boolean
- #assign_attributes(attrs) ⇒ Hash
-
#dup ⇒ PgEventstore::Subscription
Dup the current object without assigned connection.
- #eql?(other) ⇒ Boolean
- #hash ⇒ Integer
-
#lock!(lock_id, force: false) ⇒ PgEventstore::Subscription
Locks the Subscription by the given lock id.
- #reload ⇒ PgEventstore::Subscription
- #update(attrs) ⇒ Hash
Methods included from Extensions::OptionsExtension
included, #initialize, #options_hash, #readonly!, #readonly?
Instance Attribute Details
#average_event_processing_time ⇒ Float?
Returns a speed of the subscription. Divide 1 by this value to determine how much events are processed by the Subscription per second.
39 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 39 attribute(:average_event_processing_time) |
#chunk_query_interval ⇒ Integer, ...
Returns determines how often to pull events for the given Subscription in seconds.
61 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 61 attribute(:chunk_query_interval) |
#created_at ⇒ Time?
75 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 75 attribute(:created_at) |
#current_position ⇒ Integer?
Returns current Subscription’s position. It is updated automatically each time an event is processed.
31 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 31 attribute(:current_position) |
#id ⇒ Integer?
14 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 14 attribute(:id) |
#last_chunk_fed_at ⇒ Time?
Returns shows the time when last time events were fed to the event’s processor.
64 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 64 attribute(:last_chunk_fed_at) |
#last_chunk_greatest_position ⇒ Integer?
Returns shows the greatest global_position of the last event in the last chunk fed to the event’s processor.
68 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 68 attribute(:last_chunk_greatest_position) |
#last_error ⇒ Hash?
Returns the information about last error caused when processing events by the Subscription.
55 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 55 attribute(:last_error) |
#last_error_occurred_at ⇒ Time?
Returns the time when the last error occurred.
58 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 58 attribute(:last_error_occurred_at) |
#last_restarted_at ⇒ Time?
Returns last time the Subscription was restarted.
51 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 51 attribute(:last_restarted_at) |
#locked_by ⇒ Integer?
Returns The id of subscription manager which obtained the lock of the Subscription. nil value means that the Subscription isn’t locked yet by any subscription manager.
72 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 72 attribute(:locked_by) |
#max_restarts_number ⇒ Integer?
Returns maximum number of times the Subscription can be restarted.
45 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 45 attribute(:max_restarts_number) |
#name ⇒ String?
Returns Subscription’s name. Subscription should have unique pair of set and name.
20 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 20 attribute(:name) |
#options ⇒ Hash?
Returns subscription’s options to be used to query events. See SubscriptionManager#subscribe for the list of available options.
27 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 27 attribute(:options) |
#restart_count ⇒ Integer?
Returns the number of Subscription’s restarts after its failure.
42 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 42 attribute(:restart_count) |
#set ⇒ String?
Returns Subscription’s set. Subscription should have unique pair of set and name.
17 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 17 attribute(:set) |
#state ⇒ String?
Returns current Subscription’s state. It is updated automatically during Subscription’s life cycle See RunnerState::STATES for possible values.
35 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 35 attribute(:state) |
#time_between_restarts ⇒ Integer?
Returns interval in seconds between retries of failed Subscription.
48 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 48 attribute(:time_between_restarts) |
#total_processed_events ⇒ Integer?
Returns total number of events, processed by this subscription.
23 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 23 attribute(:total_processed_events) |
#updated_at ⇒ Time?
78 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 78 attribute(:updated_at) |
Class Method Details
.ping_all(subscriptions_set_id, subscriptions) ⇒ void
This method returns an undefined value.
84 85 86 87 88 89 90 91 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 84 def ping_all(subscriptions_set_id, subscriptions) result = subscription_queries.ping_all(subscriptions_set_id, subscriptions.map(&:id)) subscriptions.each do |subscription| next unless result[subscription.id] subscription.assign_attributes(updated_at: result[subscription.id]) end end |
.subscription_queries ⇒ PgEventstore::SubscriptionQueries
94 95 96 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 94 def subscription_queries SubscriptionQueries.new(connection) end |
Instance Method Details
#==(other) ⇒ Boolean
155 156 157 158 159 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 155 def ==(other) return false unless other.is_a?(Subscription) id == other.id end |
#assign_attributes(attrs) ⇒ Hash
111 112 113 114 115 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 111 def assign_attributes(attrs) attrs.each do |attr, value| public_send("#{attr}=", value) end end |
#dup ⇒ PgEventstore::Subscription
Dup the current object without assigned connection
130 131 132 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 130 def dup Subscription.new(**Utils.deep_dup()) end |
#eql?(other) ⇒ Boolean
147 148 149 150 151 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 147 def eql?(other) return false unless other.is_a?(Subscription) hash == other.hash end |
#hash ⇒ Integer
141 142 143 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 141 def hash id.hash end |
#lock!(lock_id, force: false) ⇒ PgEventstore::Subscription
Locks the Subscription by the given lock id
121 122 123 124 125 126 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 121 def lock!(lock_id, force: false) self.id = subscription_queries.find_or_create_by(set: set, name: name)[:id] self.locked_by = subscription_queries.lock!(id, lock_id, force: force) reset_runtime_attributes self end |
#reload ⇒ PgEventstore::Subscription
135 136 137 138 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 135 def reload assign_attributes(subscription_queries.find!(id)) self end |
#update(attrs) ⇒ Hash
105 106 107 |
# File 'lib/pg_eventstore/subscriptions/subscription.rb', line 105 def update(attrs) assign_attributes(subscription_queries.update(id, attrs: attrs, locked_by: locked_by)) end |