2017-02-13 7 views
0

Ich versuche, einen Qpid Proton Python-Client über AMQP v1.0 als dauerhaften Consumer für einen ActiveMQ-Broker zu abonnieren.Herstellen einer Verbindung mit einem dauerhaften Consumer - Qpid Proton Python

Ich kann ein dauerhaftes Abonnement erstellen, verstehe aber nicht, wie ich das gleiche Abonnement bei der nächsten Ausführung meines Skripts abholen kann.

Nach jedem Lauf zeigt die ActiveMQ Admin-Konsole, dass ein dauerhaftes Abonnement erstellt wurde, und es wird entsprechend der Eingabe meines Skripts benannt, aber der nächste Lauf erstellt nur einen anderen und verbindet sich nicht mit dem zuvor erstellten.

Ich denke, ich vermisse die Erstellung einer "ClientID" (wie ActiveMQ es nennt), kann aber nicht sehen (in der Qpid Proton-Dokumentation), wie es eingestellt wird.

Hier ist mein Code: -

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) 

Antwort

0

Ich habe dieses Problem gelöst (mit Hilfe der Qpid Mailingliste).

Wie vermutet, musste ich die Clientverbindung benennen. Dies geschieht, indem vor dem Aufruf der Methode connect die folgende Codezeile hinzugefügt wird.

event.container.container_id = __file__ 

(NB Ich habe einfach die Verbindung den gleichen Namen wie das Skript)

Ein weiterer Gotcha war, dass die event.receiver.close() Methode, genannt einmal mein Skript alle Nachrichten verarbeitet hatte, die dauerhafte Abonnement zerstört. Um es nach dem Ende des Skripts beizubehalten, verwenden Sie stattdessen event.receiver.detach().

Mailingliste Thread hier ->http://qpid.2158936.n2.nabble.com/Connecting-to-durable-consumer-Qpid-Proton-Python-td7659185.html

Verwandte Themen