会社行きたくなかったんです。

自由になりたくて会社辞めました

Amazon ビジネス

VB.netでAmazon SQSからメッセージを取得するサンプルプログラム作りました。

更新日:

Amazon MWS サブスクリプションAPIとAmazon SQSの設定が完了し、アマゾンからキューにメッセージが来るようになりました。

さらに、Amazon AWS の認証情報(IAMユーザー)を作成したので、Amazon SQSからメッセージを取得する準備は整いました。

ということで、Amazon SQSからメッセージを取得するサンプルアプリをVisual Studio 2017 VB.netで作成してみます。

まずは、「AWS_SQS_Test」というWindowsフォームアプリを作成します。

こちらのページによると、Nugetでインストールするとよいそうです。

「Nugetでインストール」をクリックします。

 

nuget.orgで「Tags:"aws-sdk-v3"」を検索した結果が表示されました。

「AWSSDK - Amazon Simple Queue Service」と書いてあるのでクリックしてみました。

パッケージマネージャーコンソールで「Install-Package AWSSDK.SQS 」を実行すれば良いということみたいです。

ツール>Nuget パッケージマネージャー>パッケージマネージャーコンソール
を開きます。

「Install-Package AWSSDK.SQS」と入力して、Enterキーを押してみました。

参照に「AWSSDK.Core」と「AWSSDK.SQS」が追加されました。

Amazon SQSの操作には、「AWSSDK.SQS」が必要で、「AWSSDK.SQS」を使うためには「AWSSDK.Core」が必要だということなのでしょう。

Formには、次のようにコントロールを配置しました。

(SplitContainer1で上下に、フォームを分けて、上に「メッセージ受信 」ボタン(btnメッセージ受信)、下にはRichTextBox(rtxtMessage)を配置。)

「btnメッセージ受信」をクリックすると、「rtxtMessage」に取得したメッセージが表示されます。
メッセージは、「btnメッセージ受信」を一度クリックするごとに、1つずつ受信されます。
受信したメッセージは、Amazon SQS側で削除するようにしました。

実際には、
メッセージを受信

メッセージを処理

メッセージを削除

という流れになりますが、テストなので、「メッセージを処理」の部分はありません。

コードは次のようになります。
VB.netでAmazon SQSからメッセージを取得するコード

Imports Amazon
Imports Amazon.Runtime
Imports Amazon.SQS
Imports Amazon.SQS.Model
Public Class Form1
    Private Sub btnメッセージ受信_Click(sender As Object, e As EventArgs) Handles btnメッセージ受信.Click
        Dim sqsConfig As New AmazonSQSConfig
        Dim sqsClient As AmazonSQSClient
        Dim sAccessKeyID As String = "[アクセスキーID]"
        Dim sSecretKey As String = "[シークレットアクセスキー]"
        '「us-west-2」の部分はリージョンによって変わります。
        'オレゴンでSQSキューを作ったので、ServiceURLは以下のようになります。。
        sqsConfig.ServiceURL = "http://sqs.us-west-2.amazonaws.com"
        'Amazon SQS クライアントを作成
        sqsClient = New AmazonSQSClient(New BasicAWSCredentials(sAccessKeyID, sSecretKey), sqsConfig)
        Dim receiveMessageRequest As New ReceiveMessageRequest()
        'ここで、SQSキューのURLを指定します。
        receiveMessageRequest.QueueUrl = "[SQSキューのURL]"
        Dim receiveMessageResponse As ReceiveMessageResponse
        'メッセージを受信します。
        receiveMessageResponse = sqsClient.ReceiveMessage(receiveMessageRequest)
        Dim messageRecieptHandle As String
        For Each Message In receiveMessageResponse.Messages
            '受信したメッセージをRichTextBoxに表示するようにしました。
            rtxtMessage.Text = Message.Body
            'ここで、何らかの処理を行って、完了したら、メッセージを削除します。
            messageRecieptHandle = Message.ReceiptHandle
            sqsClient.DeleteMessage(New DeleteMessageRequest(receiveMessageRequest.QueueUrl, messageRecieptHandle))
        Next
    End Sub

End Class

わかりやすくするために、認証情報(アクセスキーIDとシークレットアクセスキー)をコード内に、直接書くやりかたにしてありますが、実際には別の方法で管理した方が良いです。

現在、キューに635件のメッセージがたまっています。

サンプルアプリを起動してみました。

「btnメッセージ受信」をクリックしたら、メッセージが下に表示されます。
同時に、このメッセージは削除されました。

AWSのコンソールで確認すると、メッセージが1件削除されて、634件になっています。

 

「Amazon AWS」関連書籍の情報

楽天で検索した結果

アマゾンで検索した結果

-Amazon, ビジネス

Copyright© 自由になりたくて会社辞めました , 2024 AllRights Reserved Powered by AFFINGER4.