如何使用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 集线器?