Module: Que

Extended by:
Forwardable, Utils::Assertions, Utils::Constantization, Utils::ErrorNotification, Utils::Freeze, Utils::Introspection, Utils::JSONSerialization, Utils::Logging, Utils::Middleware, Utils::QueueManagement, Utils::Ruby2Keywords, Utils::Transactions
Defined in:
lib/que/job.rb,
lib/que.rb,
lib/que/locker.rb,
lib/que/poller.rb,
lib/que/worker.rb,
lib/que/metajob.rb,
lib/que/version.rb,
lib/que/listener.rb,
lib/que/connection.rb,
lib/que/job_buffer.rb,
lib/que/migrations.rb,
lib/que/job_methods.rb,
lib/que/result_queue.rb,
lib/que/sequel/model.rb,
lib/que/utils/freeze.rb,
lib/que/rails/railtie.rb,
lib/que/utils/logging.rb,
lib/que/connection_pool.rb,
lib/que/utils/assertions.rb,
lib/que/utils/middleware.rb,
lib/que/utils/transactions.rb,
lib/que/active_record/model.rb,
lib/que/utils/introspection.rb,
lib/que/utils/ruby2_keywords.rb,
lib/que/active_job/extensions.rb,
lib/que/utils/constantization.rb,
lib/que/command_line_interface.rb,
lib/que/utils/queue_management.rb,
lib/que/active_record/connection.rb,
lib/que/utils/error_notification.rb,
lib/que/utils/json_serialization.rb

Overview

Tools for managing the contents/state of the queue.

Defined Under Namespace

Modules: ActiveJob, ActiveRecord, CommandLineInterface, JobMethods, Migrations, Rails, Sequel, Utils Classes: Connection, ConnectionPool, Error, Job, JobBuffer, Listener, Locker, Metajob, Poller, ResultQueue, Worker

Constant Summary collapse

CURRENT_HOSTNAME =
Socket.gethostname.freeze
DEFAULT_QUEUE =
'default'.freeze
TIME_REGEX =
/\A\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}.\d{6}Z\z/
CONFIG_MUTEX =
Mutex.new
MAXIMUM_PRIORITY =
32767
SQL =

Store SQL strings frozen, with squashed whitespace so logs read better.

{}
VERSION =
'2.4.0'

Constants included from Utils::Middleware

Utils::Middleware::TYPES

Constants included from Utils::ErrorNotification

Utils::ErrorNotification::ASYNC_QUEUE, Utils::ErrorNotification::MAX_QUEUE_SIZE

Class Attribute Summary collapse

Attributes included from Utils::Logging

#internal_logger, #log_formatter, #logger

Attributes included from Utils::ErrorNotification

#error_notifier

Class Method Summary collapse

Methods included from Utils::Transactions

transaction

Methods included from Utils::Ruby2Keywords

split_out_ruby2_keywords

Methods included from Utils::QueueManagement

clear!, create!, drop!

Methods included from Utils::Logging

get_logger, internal_log, log

Methods included from Utils::JSONSerialization

deserialize_json, serialize_json

Methods included from Utils::Introspection

job_states, job_stats

Methods included from Utils::Freeze

recursively_freeze

Methods included from Utils::ErrorNotification

async_error_thread, notify_error, notify_error_async

Methods included from Utils::Constantization

constantize

Methods included from Utils::Assertions

assert, assert?

Class Attribute Details

.default_queueObject



78
79
80
# File 'lib/que.rb', line 78

def default_queue
  @default_queue || DEFAULT_QUEUE
end

.lockerObject

Returns the value of attribute locker.



11
12
13
# File 'lib/que/locker.rb', line 11

def locker
  @locker
end

.poolObject

How to actually access Que’s established connection pool.



113
114
115
# File 'lib/que.rb', line 113

def pool
  @pool || raise(Error, "Que connection not established!")
end

.use_prepared_statementsObject

Global configuration logic.



76
77
78
# File 'lib/que.rb', line 76

def use_prepared_statements
  @use_prepared_statements
end

Class Method Details

.connection=(conn) ⇒ Object

Support simple integration with many common connection pools.



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/que.rb', line 87

def connection=(conn)
  self.connection_proc =
    if conn.to_s == 'ActiveRecord'
      # Load and setup AR compatibility.
      require_relative 'que/active_record/connection'
      m = Que::ActiveRecord::Connection::JobMiddleware
      job_middleware << m unless job_middleware.include?(m)
      Que::ActiveRecord::Connection.method(:checkout)
    else
      case conn.class.to_s
      when 'Sequel::Postgres::Database' then conn.method(:synchronize)
      when 'Pond'                       then conn.method(:checkout)
      when 'ConnectionPool'             then conn.method(:with)
      when 'NilClass'                   then conn
      else raise Error, "Unsupported connection: #{conn.class}"
      end
    end
end

.connection_proc=(connection_proc) ⇒ Object

Integrate Que with any connection pool by passing it a reentrant block that locks and yields a Postgres connection.



108
109
110
# File 'lib/que.rb', line 108

def connection_proc=(connection_proc)
  @pool = connection_proc && ConnectionPool.new(&connection_proc)
end

.job_schema_versionObject



6
7
8
# File 'lib/que/version.rb', line 6

def self.job_schema_version
  2
end

.server?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/que.rb', line 82

def server?
  !defined?(Que::CommandLineInterface).nil?
end