SimpleQS

SimpleQS is Ruby wrapper for Amazon Simple Queue Service (SQS) REST API. It allows you perform all kind of calls on queues and messages.

6
1
Ruby

English

Installation

	[sudo] gem install simple_qs

Usage

	require 'simple_qs'
	SimpleQS.account_id = '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.account_id = '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])