2017-02-13 23 views
0

我试图让Qpid Proton Python客户端通过AMQP v1.0订阅ActiveMQ代理作为持久使用者。连接到耐用消费者 - Qpid质子Python

我可以创建持久订阅,但不太明白如何在下次运行脚本时获取相同订阅。

每次运行后,ActiveMQ管理控制台都会显示已创建一个持久预订,并且根据我的脚本输入命名,但下一次运行只是创建另一个,而不是连接到之前创建的预定。

我想我可能会错过创建“ClientID”(如ActiveMQ所称的),但无法看到(在Qpid质子文档中)如何设置它。

这里是我的代码: -

def on_start(self, event): 
    if self.subscription_name: 
     logging.debug("Naming durable subscription " + self.subscription_name) 
     durable = DurableSubscription() 
    else: 
     logging.debug("Subscription will not be durable") 
     durable = None 

    messaging_connection = event.container.connect(self.url) 
    logging.info(messaging_connection.clientID) 
    event.container.create_receiver(
     messaging_connection, 
     self.resource, 
     name=self.subscription_name, 
     options=durable 
    ) 
    logging.debug("Connected to " + self.url + "/" + self.resource) 

回答

0

我已经解决了这个(从Qpid用户邮件列表帮助)。

可疑的是,我需要命名客户端连接。这是通过在调用connect方法之前添加以下代码行来完成的。

event.container.container_id = __file__ 

(注:我只是给了连接的名称相同的脚本)

另一个疑难杂症是,event.receiver.close()方法,调用一次我的脚本已经处理的所有邮件,破坏了长期订阅。要在脚本结束后将其保留原位,请改为使用event.receiver.detach()

邮件列表线程在这里 - >http://qpid.2158936.n2.nabble.com/Connecting-to-durable-consumer-Qpid-Proton-Python-td7659185.html

相关问题