У меня есть постоянный подписчик на тему (например: topic_a
). Я пытаюсь предоставить клиенту индивидуальный ACK. В конце блока try я предоставляю подтверждение вручную, а в блоке исключения я не делаю подтверждения. Всякий раз, когда происходит ошибка, потребитель (подписчик) зависает и в конце концов останавливается.
Я ПЫТАЮСЬ СДЕЛАТЬ РУКОВОДСТВО ПО РЕАЛИЗАЦИИ НА ОСНОВЕ (PUB-SUB).
1). Является ли это возможным?
2). Будет ли сообщение доставлено тому же абоненту длительного пользования?
выполнить метод внутри основного класса:
self.conn = stomp.Connection11(self.conn_param, encoding=self.ENCODE_FORMAT)
self.conn.start()
self.conn.connect(wait=True, headers={'client-id': self.CLIENT_ID})
self.conn.set_listener('', CustomListener(self.conn))
Класс слушателя:
class CustomListener(stomp.ConnectionListener):
def __init__(self, conn, func_to_exec):
self.conn = conn
def on_message(self, headers, message):
try:
message = json.loads(message)
/**DO SOME BUSINESS LOGIC**/
self.conn.ack(headers.get("message-id"), int(headers.get("subscription")))
print("message ack done..!")
except Exception as ex:
print("Exception in processing message :: %s"%(ex))
в слушателе on_message, если есть какие-либо исключения во время процесса. тогда сообщение должно быть доставлено.