jasonrbriggs / stomp.py

“stomp.py” is a Python client library for accessing messaging servers (such as ActiveMQ or RabbitMQ) using the STOMP protocol (versions 1.0, 1.1 and 1.2). It can also be run as a standalone, command-line client for testing.
Apache License 2.0
491 stars 167 forks source link

Get response for send() in stomp.py to retry in case of failure #407

Open umesh191994 opened 1 year ago

umesh191994 commented 1 year ago

Below is my listener class with the subscriber

import os
import time
import stomp

def connect_and_subscribe(conn):
    conn.connect('guest', 'guest', wait=True)
    conn.subscribe(destination='/queue/test', id=1, ack='auto')

class MyListener(stomp.ConnectionListener):
    def __init__(self, conn):
        self.conn = conn

    def on_error(self, frame):
        print('received an error "%s"' % frame.body)

    def on_message(self, frame):
        print('received a message "%s"' % frame.body)
        for x in range(10):
            print(x)
            time.sleep(1)
        print('processed message')

    def on_disconnected(self):
        print('disconnected')
        connect_and_subscribe(self.conn)

conn = stomp.Connection([('localhost', 62613)], heartbeats=(4000, 4000))
conn.set_listener('', MyListener(conn))
connect_and_subscribe(conn)
time.sleep(60)
conn.disconnect()

Below is my producer code

import stomp
conn = stomp.Connection([('localhost', 62613)])
conn.connect('guest', 'guest', wait=True)
result = conn.send('/queue/test', 'test message')

I need to get the result/status of sent data, in order use that status to retry in case of failover

I know this details can be received in on_send listener

on_send SEND {'content-length': 5, 'destination': '/queue/test'} b'a test message'

But for this I need to create a class inheriting ConnectionListener, and add method on_send Listener to get the response.

Is it possible to get the response without creating any class?

Thanks again!

@jasonrbriggs