2017-02-13 60 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

相關問題