Node.js
sqs
ElasticMQ

ローカルテスト用にaws-sdkでElasticMQに接続するNode.jsサンプル

More than 3 years have passed since last update.


SQS = require('aws-sdk').SQS

# クライアントを生成
client = new SQS
accessKeyId: 'アクセスキーIDを記述...' # ElasticMQの場合は不使用
secretAccessKey: 'シークレットアクセスキーを記述...' # ElasticMQの場合は不使用
apiVersion: '2012-11-05'
region: 'リージョンを記述...' # ElasticMQの場合は不使用

# キュー名
queueName = 'キュー名を記述...'

# ローカル開発環境用(ElasticMQ)
queueUrl = "http://localhost:9324/queue/#{queueName}"
# 本番環境用(AWS SQS)
# queueUrl = "https://sqs.リージョン.amazonaws.com/xxxxxxxxxx/#{queueName}"

# ElasticMQ用にコレを設定する必要がある
client.setEndpoint 'http://localhost:9324'

# キューを作成
client.createQueue {QueueName: queueName}, (err) ->

if err
console.log "### エラー", err
return

# 送信用パラメータ
sendParams =
QueueUrl: queueUrl
MessageBody: 'This is a test'
DelaySeconds: 0

# メッセージ送信
client.sendMessage sendParams, (err) ->
if err
console.log "### エラー", err
return

# 受信用オプション
recvOptions =
QueueUrl: queueUrl
MaxNumberOfMessages: 10
VisibilityTimeout: 60
WaitTimeSeconds: 20

# メッセージ受信
client.receiveMessage recvOptions, (err, data) ->
if err
console.log "### エラー", err
return

# メッセージがあれば
if data?.Messages?.length > 0

# メッセージ件数分処理
for message, i in data.Messages
console.log "### メッセージ[#{i}]", message.Body

# 削除用パラメータ
delOptions =
QueueUrl: queueUrl
ReceiptHandle: message.ReceiptHandle

# メッセージ削除(ElasticMQは必要ない??)
client.deleteMessage delOptions, (err, data) ->
if err
console.log "### エラー", err
return