すべてのプロダクト
Search
ドキュメントセンター

Simple Message Queue (formerly MNS):Python 用 SMQ SDK を使用してトピックにメッセージを送信する

最終更新日:Jan 13, 2025

このトピックでは、Python 用 Simple Message Queue (SMQ) SDK を使用してトピックにメッセージを送信するための前提条件とサンプルコードについて説明します。

前提条件

  • Python 用 SMQ SDK がインストールされていること。詳細については、Python 用 SDK のインストールをご参照ください。

  • エンドポイントとアクセス認証情報が構成されていること。詳細については、エンドポイントとアクセス認証情報の構成をご参照ください。

    重要
    • この例では、エンドポイントは、エンドポイント構成に使用される sample.cfg ファイルから取得されます。AccessKey ペアとセキュリティトークンは、環境変数から取得されます。

    • サンプルコードのダウンロード方法の詳細については、概要 トピックの「サンプルコード」セクションをご参照ください。

メッセージ本文のエンコード方式を選択する

メッセージ本文を Base64 エンコードするかどうかを指定します。詳細については、メッセージ本文のエンコード方式の選択をご参照ください。

メッセージをパブリッシュする

  • 次のコマンドを実行して publish_message.py ファイルを実行し、複数のメッセージをトピックにパブリッシュします:

    python publish_message.py MyTopic1        

    次の出力が返されます:

    ==========Publish Message To Topic==========  // トピックへのメッセージのパブリッシュ
    TopicName:MyTopic1
    MessageCount:3
    
    Publish Raw Message Succeed. MessageBody:I am test message 0. MessageID:4EA4CF419C3A7FC67FA95077****0001 // Raw メッセージのパブリッシュ成功。メッセージ本文:I am test message 0。メッセージID:4EA4CF419C3A7FC67FA95077****0001
    Publish Raw Message Succeed. MessageBody:I am test message 1. MessageID:4EA4CF419C3A7FC67FA95077****0002 // Raw メッセージのパブリッシュ成功。メッセージ本文:I am test message 1。メッセージID:4EA4CF419C3A7FC67FA95077****0002
    Publish Raw Message Succeed. MessageBody:I am test message 2. MessageID:4EA4CF419C3A7FC67FA95077****0003 // Raw メッセージのパブリッシュ成功。メッセージ本文:I am test message 2。メッセージID:4EA4CF419C3A7FC67FA95077****0003
    Publish Base64 Encoded Message Succeed. MessageBody:I am test message 0. MessageID:4EA4CF419C3A7FC67FA95077****0004 // Base64 エンコードされたメッセージのパブリッシュ成功。メッセージ本文:I am test message 0。メッセージID:4EA4CF419C3A7FC67FA95077****0004
    Publish Base64 Encoded Message Succeed. MessageBody:I am test message 1. MessageID:4EA4CF419C3A7FC67FA95077****0005 // Base64 エンコードされたメッセージのパブリッシュ成功。メッセージ本文:I am test message 1。メッセージID:4EA4CF419C3A7FC67FA95077****0005
    Publish Base64 Encoded Message Succeed. MessageBody:I am test message 2. MessageID:4EA4CF419C3A7FC67FA95077****0006 // Base64 エンコードされたメッセージのパブリッシュ成功。メッセージ本文:I am test message 2。メッセージID:4EA4CF419C3A7FC67FA95077****0006
    
  • サンプルコード:

    my_account = Account(endpoint, accid, acckey, token)
    topic_name = sys.argv[1] if len(sys.argv) > 1 else "MySampleTopic"
    my_topic = my_account.get_topic(topic_name)
    
    msg_count = 3
    print("%sPublish Message To Topic%s\nTopicName:%s\nMessageCount:%s\n" % (10*"=", 10*"=", topic_name, msg_count)) # トピックへのメッセージのパブリッシュ、トピック名、メッセージ数を表示
    
    for i in range(msg_count):
        try:
            msg_body = u"I am test message %s." % i
            msg = TopicMessage(msg_body)
            re_msg = my_topic.publish_message(msg)
            print("Publish Raw Message Succeed. MessageBody:%s MessageID:%s" % (msg_body, re_msg.message_id)) # Raw メッセージのパブリッシュ成功、メッセージ本文とIDを表示
        except MNSExceptionBase as e:
            if e.type == "TopicNotExist":
                print("Topic not exist, please create it.") # トピックが存在しない場合は作成を促す
                sys.exit(1)
            print("Publish Raw Message Fail. Exception:%s" % e) # Raw メッセージのパブリッシュ失敗、例外を表示
    
    for i in range(msg_count):
        try:
            msg_body = u"I am test message %s." % i
            msg = Base64TopicMessage(msg_body)
            re_msg = my_topic.publish_message(msg)
            print("Publish Base64 Encoded Message Succeed. MessageBody:%s MessageID:%s" % (msg_body, re_msg.message_id)) # Base64 エンコードされたメッセージのパブリッシュ成功、メッセージ本文とIDを表示
        except MNSExceptionBase as e:
            if e.type == "TopicNotExist":
                print("Topic not exist, please create it.") # トピックが存在しない場合は作成を促す
                sys.exit(1)
            print("Publish Base64 Encoded Message Fail. Exception:%s" % e) # Base64 エンコードされたメッセージのパブリッシュ失敗、例外を表示