Falc410
Vice Admiral
- Registriert
- Juni 2006
- Beiträge
- 6.930
Ich muss einen STOMP Client implementieren der sich bei einer Queue an einem ActiveMQ JMS subscribed. Das ganze muss in Python sein und da gibt es nicht viel Auswahl. Also habe ich mir stompest angeschaut. Da gibt es einen async und einen sync Client. Den async Client möchte ich nicht unbedingt benutzen da ich dann jede Menge zusätzlicher Libraries (e.g. Twisted framework) benötige.
Der sync Client sieht aber so aus:
Quelle: http://nikipore.github.io/stompest/sync.html
Ich habe nun zwei Probleme mit dem Code:
1. Wie macht ein STOMP Client das normalerweise? Bleibt er durchgehend verbunden oder verbindet er sich immer wieder neu zum Server? Falls die Verbindung offen bleibt, wie macht man das ohne ein While true?
2. Der Code wird sowieso in einem eigenen Thread laufen. Soll ich das while true dann einfach so hinnehmen oder blockiert es am Schluss doch den Server? Würde hier ein sleep() einbauen etwas bringen?
Der sync Client sieht aber so aus:
Code:
from stompest.config import StompConfig
from stompest.protocol import StompSpec
from stompest.sync import Stomp
CONFIG = StompConfig('tcp://localhost:61613')
QUEUE = '/queue/test'
if __name__ == '__main__':
client = Stomp(CONFIG)
client.connect()
client.subscribe(QUEUE, {StompSpec.ACK_HEADER: StompSpec.ACK_CLIENT_INDIVIDUAL})
while True:
frame = client.receiveFrame()
print 'Got %s' % frame.info()
client.ack(frame)
client.disconnect()
Ich habe nun zwei Probleme mit dem Code:
1. Wie macht ein STOMP Client das normalerweise? Bleibt er durchgehend verbunden oder verbindet er sich immer wieder neu zum Server? Falls die Verbindung offen bleibt, wie macht man das ohne ein While true?
2. Der Code wird sowieso in einem eigenen Thread laufen. Soll ich das while true dann einfach so hinnehmen oder blockiert es am Schluss doch den Server? Würde hier ein sleep() einbauen etwas bringen?