如何使用python形成地址字符串以连接到安慰

Posted

技术标签:

【中文标题】如何使用python形成地址字符串以连接到安慰【英文标题】:how to form address string to connect to solace using python 【发布时间】:2020-01-01 10:11:13 【问题描述】:

我想使用来自我公司已设置的慰藉代理的消息。当我询问连接 solace 所需的主机名等时,以下详细信息由我公司的 solace 团队提供-

连接工厂 - cf/dev_test_uk*** - dev_test_uk*** 服务器 - smf://host:port用户名 - user1密码 - password1topic- testtopic

作为参考,我使用https://github.com/SolaceSamples/solace-samples-amqp-qpid-proton-python提供的代码

我的代码是 -

from proton import Message
from proton.handlers import MessagingHandler
from proton.reactor import Container

class HelloWorld(MessagingHandler):
    def __init__(self,url,address,username,password):
        super(HelloWorld,self).__init__()
        self.url = url
        self.address = address
        self.username = username
        self.password = password

    def on_start(self,even):
        conn = event.container.connect(url = self.url,
                                       user=self.username,
                                       password=self.password)

        event.container.create_receiver(conn, self.address)

    def on_message(self, event):
        print(event.message.body)
        event.connection.close()


Container(HelloWorld("smf://host:port","topic://testtopic","user1","password1")).run()

当我运行此代码时,我得到 'amqp:connection:framing-error',"SASL header mismatch:Insufficient data to determine protocol [''] (connection aborted)"

这是预期的,因为我认为形成的 url 或地址字符串不正确。 以下是我的问题-

在进行连接时我应该在哪里使用这个 *** 和连接工厂? *** 服务器 url 不应该是 amqp://.... 之类的吗?

请帮帮我。

【问题讨论】:

看起来他们为您提供了 SMF 协议的访问参数(肯定是 URL),而不是 AMQP。 SMF 是专有的消息传递协议,您可以通过下载支持语言的 Solace 客户端 SDK 来使用。支持 AMQP,但它接受 Solace 路由器上不同端口上的连接(默认为 5671/5672) 文档在这里:docs.solace.com/Open-APIs-Protocols/AMQP/Using-AMQP.htmdocs.solace.com/Configuring-and-Managing/… ... 这就是您的 Solace 团队可以在代理上为您启用 AMQP 的方式,以防他们尚未启用:docs.solace.com/Configuring-and-Managing/AMQP-Tasks/… 【参考方案1】:

不幸的是.... Solace 不支持 python 模块访问 Solace Protocol(SMF)....

OLNY 可以自己封装 C API .....

因为我也需要这个 Python Client API.....

所以你可以参考我们的项目....

https://pypi.org/project/pysolace/ (警告 - 非官方

【讨论】:

以上是关于如何使用python形成地址字符串以连接到安慰的主要内容,如果未能解决你的问题,请参考以下文章

如何设置连接 URL 以连接到 HSQLDB 中的多个数据库

蓝牙:如何使用 Bluez 创建一个套接字以连接到具有特定 UUID 的服务?

如何配置 Apache Spark 2.4.5 以连接到 HIVE 的 MySQL Metastore?

如何编写 Netty 客户端以连接到 Signalr 集线器?

如何动态传递数据库连接属性以连接到 pentaho 中的不同数据库

Laravel 5 如何配置 Queue 数据库驱动程序以连接到非默认数据库?