我是 Qpid Proton Python 和 AMQP 的新手。有一件事我有点坚持,我希望我能得到社区的一些支持。
如果从我的应用程序到消息代理 (ActiveMQ) 的连接丢失,我的应用程序要求之一是每分钟重新尝试连接。
从源代码和这个:文档(第 5.2.4 节,第 14 页)来看,似乎我可以在 on_start 事件期间调用“container.connect()”方法时为“reconnect”参数创建一个自定义 Backoff 实例。
所以我为我的自定义 Backoff 实例做了这样的事情:
class Backoff:
"""
A modified reconnect strategy that retries, every 60s.
Repeated calls to :meth:`next` returns a value for the next delay
"""
def __init__(self):
self.delay = 60
def reset(self):
"""
Reset the backoff delay to 60 seconds.
(This method is required for Qpid Proton Library)
"""
self.delay = 60
def next(self):
"""
Modified the backoff mechanism to attempt reconnect every 60s
:return: The next delay in seconds.
:rtype: ``float``
"""
return self.delay
在 on_start 期间:
def on_start(self, event):
self.container = event.container
self.conn = self.container.connect(
url=self.url, user=self.user, password=self.password, reconnect=Backoff())
问题:
- 我可以知道如何测试这是否真的可以正常工作吗?我在自定义 Backoff 实例的“next()”方法中放置了打印语句,并断开了我的 Wifi 以模拟断开连接,但是,重新连接尝试似乎不起作用。
- 当容器运行时,如何捕获断开事件并尝试重新连接?
任何建议将不胜感激,谢谢!