微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过Python和azure-uamqp-python使用AMQP连接到AmazonMQ

如何解决通过Python和azure-uamqp-python使用AMQP连接到AmazonMQ

我正在尝试使用来自Azure的AmazonMQ客户端通过AMQP 1.0 protocol连接到azure-uamqp-python

def uamqp_send_simple():
    msg_content = b"Hello world"
    parsed_uri = urlparse(URI)
    plain_auth = authentication.SASLPlain(parsed_uri.hostname,KEY_NAME,ACCESS_KEY)
    uamqp.send_message(URI,msg_content,auth=plain_auth)
    print("Message sent!")

我遇到一个Invalid Target Address错误,而uri是

ValueError: Invalid Target address: ParseResultBytes(scheme=b'amqp+ssl',netloc=xxxx.xxxx.amazonaws.com:5671',path=b'',params=b'',query=b'',fragment=b'')

使用方案amqp+ssl

使用通过SASLPlain的身份验证方案也会发生同样的情况:

def uamqp_send_simple_sasl():

    parsed_uri = urlparse(URI)
    
    plain_auth = uamqp.authentication.SASLPlain(parsed_uri.hostname,ACCESS_KEY,port=int(PORT),transport_type=uamqp.TransportType.Amqp)
    
    target = uamqp.Target("amqp+ssl://" + str(parsed_uri.hostname))
    send_client = uamqp.SendClient(target,auth=plain_auth,debug=True,client_name="send_example_uamqp")

    try:
        
        msg_props = uamqp.message.MessageProperties()
        msg_props.to = "queue://test"
        message = uamqp.Message("content",properties=msg_props)
        
        print(message.properties)
        print(message.encode_message())

        send_client.queue_message(message)
        results = send_client.send_all_messages(close_on_done=False)
        assert not [m for m in results if m == uamqp.constants.MessageState.SendFailed]
    
    finally:
        send_client.close()
    
    print("Message sent!")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。