English

Installation

  [sudo] gem install simple_qs

Usage

  require 'simple_qs'
  SimpleQS. = 'your-account-id'
  SimpleQS.access_key_id = 'YOUR_ACCESS_KEY'
  SimpleQS.secret_access_key = 'YOUR_SECRET_ACCESS_KEY'

Region

You can select region for queue:

  # :us_east_1      => 'sqs.us-east-1.amazonaws.com',
  # :us_west_1      => 'sqs.us-west-1.amazonaws.com',
  # :eu_west_1      => 'sqs.eu-west-1.amazonaws.com',
  # :ap_southeast_1 => 'sqs.ap-southeast-1.amazonaws.com'
  SimpleQS.host # => 'sqs.us-east-1.amazonaws.com'
  
  SimpleQS.host = :eu_west_1
  SimpleQS.host # => 'sqs.eu-west-1.amazonaws.com'

Queues

Create a queue:

  queue = SimpleQS::Queue.create('queue_name')

Or:

  SimpleQS::Queue.create('queue_name') do |queue|
    # ...
  end

Create a queue with specific default visibility timeout for received messages:

  SimpleQS::Queue.create('queue_name', 60) # Visibility timeout set to 60 secinds instead of default 30

List all account's queues:

  SimpleQS::Queue.list # returns list of SimpleQS::Queue objects

List all account's queues starting with 'test':

  SimpleQS::Queue.list('test')

Check if queue exists:

  SimpleQS::Queue.exists?('queue_name')

Change default visibility timeout for queue:

  SimpleQS::Queue.new('queue_name').set_visibility_timeout(120)

Change maximum message size for queue:

  SimpleQS::Queue.new('queue_name').set_maximum_message_size(65536)

Change message retention period:

  SimpleQS::Queue.new('queue_name').set_message_retention_period(1209600)

Set queue attributes:

  SimpleQS::Queue.new('queue_name').set_attributes({:VisibilityTimeout => 120, :Policy => "policy JSON here"})

Get queue attributes:

  SimpleQS::Queue.new('queue_name').get_attributes(:All)

Add permissions:

  SimpleQS::Queue.new('queue_name').add_permissions('testPerms', [
    {:account_id => '098166147350', :action => 'SendMessage'},
    {:account_id => '098166147350', :action => 'ReceiveMessage'}
  ])

Remove permissions:

  SimpleQS::Queue.new('queue_name').remove_permissions('testPerms')

Delete queue:

  SimpleQS::Queue.new('queue_name').delete

Or:

  SimpleQS::Queue.delete('queue_name')

Messages

Send message:

  queue = SimpleQS::Queue.new('queue_name')
  queue.send_message('message 1')
  queue.send_message('message 2')

Or:

  SimpleQS::Message.send(queue, 'message 1')
  SimpleQS::Message.send(queue, 'message 2')

Receive message(s):

  queue.receive_messages # always returns array of messages
  queue.receive_messages(:All, 10, 70) # receive maximum 10 messages with all attributes (:All)
                     # and set for them visibility timeout to 70 seconds

Or:

  SimpleQS::Message.receive(queue)
  SimpleQS::Message.receive(queue, :All, 10, 70)

Resend received message:

  messages = queue.receive_messages
  messages.first.resend

Change visibility timeout for this message:

  messages.first.change_visibility(120) # Change to 120 seconds

Delete received message:

  messages.first.delete

TODO

See TODO file

Issues

ISSUES

Authors

Marjan Krekoten' ([email protected])

Українською

Встановлення

  [sudo] gem install simple_qs

Користування

  require 'simple_qs'
  SimpleQS. = 'your-account-id'
  SimpleQS.access_key_id = 'YOUR_ACCESS_KEY'

  SimpleQS.secret_access_key = 'YOUR_SECRET_ACCESS_KEY'

Регіон

Можна обрати регіон, в якому буде створена черга:

  # :us_east_1      => 'sqs.us-east-1.amazonaws.com',
  # :us_west_1      => 'sqs.us-west-1.amazonaws.com',
  # :eu_west_1      => 'sqs.eu-west-1.amazonaws.com',
  # :ap_southeast_1 => 'sqs.ap-southeast-1.amazonaws.com'
  SimpleQS.host # => 'sqs.us-east-1.amazonaws.com'

  SimpleQS.host = :eu_west_1
  SimpleQS.host # => 'sqs.eu-west-1.amazonaws.com'

Черги

Створити чергу:

  queue = SimpleQS::Queue.create('queue_name')

Або:

  SimpleQS::Queue.create('queue_name') do |queue|
    # ...
  end

Створити чергу із специфічним обмеженням часу невидимості для отриманих повідомлень:

  SimpleQS::Queue.create('queue_name', 60) # Час невидимості встановленно на 60 секунд, натомість типових 30-ти

Перелічити всі черги даного рахунку:

  SimpleQS::Queue.list # returns list of SimpleQS::Queue objects

Перелічити всі черги даного рахунку, що починаються на 'test':

  SimpleQS::Queue.list('test')

Перевірити чи черга існує:

  SimpleQS::Queue.exists?('queue_name')

Змінити типовий час невидимості для даної черги:

  SimpleQS::Queue.new('queue_name').set_visibility_timeout(120)

Змінити максимальний розмір повідомлення:

  SimpleQS::Queue.new('queue_name').set_maximum_message_size(65536)

Змінити період зберігання повідомлень для черги:

  SimpleQS::Queue.new('queue_name').set_message_retention_period(1209600)

Встановити атрибути черги:

  SimpleQS::Queue.new('queue_name').set_attributes({:VisibilityTimeout => 120, :Policy => "policy JSON here"})

Отримати поточні атрибути черги:

  SimpleQS::Queue.new('queue_name').get_attributes(:All)

Надати дозволи:

  SimpleQS::Queue.new('queue_name').add_permissions('testPerms', [
    {:account_id => '098166147350', :action => 'SendMessage'},
    {:account_id => '098166147350', :action => 'ReceiveMessage'}
  ])

Скасувати дозволи:

  SimpleQS::Queue.new('queue_name').remove_permissions('testPerms')

Видалити чергу:

  SimpleQS::Queue.new('queue_name').delete

Або:

  SimpleQS::Queue.delete('queue_name')

Повідомлення

Відправити повідомлення:

  queue = SimpleQS::Queue.new('queue_name')
  queue.send_message('message 1')
  queue.send_message('message 2')

Або:

  SimpleQS::Message.send(queue, 'message 1')
  SimpleQS::Message.send(queue, 'message 2')

Отримати повідомлення:

  queue.receive_messages # завжди повертає масив
  queue.receive_messages(:All, 10, 70) # отримати максимум 10 повідомлень зі всіма атрибутами (:All)
                     # та встановленим часом невидимості у 70 секунд

Або:

  SimpleQS::Message.receive(queue)
  SimpleQS::Message.receive(queue, :All, 10, 70)

Надіслати отримані повідомлення ще раз:

  messages = queue.receive_messages
  messages.first.resend

Змінити час невидимості для даного повідомлення:

  messages.first.change_visibility(120) # Встановити у 120 секунд

Видалити отримане повідомлення з черги:

  messages.first.delete

Що потрібно зробити

Дивіться TODO

Помилки, побажання і т.і.

ISSUES

Автори

Мар'ян Крекотень ([email protected])