Ниже приведены параметры подключения в программе python для подключения к ActiveMQ
broker_url = config_params.items('BROKERS')
conn = stomp.Connection12(broker_url,
reconnect_sleep_initial=20.0,
reconnect_sleep_increase=2.0,
reconnect_attempts_max=10,
heartbeats=(60000,60000)
)
Так что ReadCheckInterval
и WriteCheckInterval
установлены на 1 минуту для подключения. Похоже, сердцебиение пропускается. Я просто пытаюсь выяснить, отсутствуют ли сердцебиения на стороне клиента или сервера ActiveMQ. Кто-нибудь может мне помочь?
Ниже приведены журналы программы Python:
2020-02-25 12:27:16,141 - INFO - Attempting connection to host
2020-02-25 12:27:16,142 - INFO - Established connection to host
2020-02-25 12:27:16,142 - INFO - Starting receiver loop
2020-02-25 12:27:16,143 - DEBUG - Sending frame: ['STOMP', '\n', 'accept-version:1.2\n', 'client-id, 'heart-beat:60000,60000\n',]
2020-02-25 12:27:16,143 - DEBUG - Received frame: 'CONNECTED', headers={'server': 'ActiveMQ/5.15.2', 'heart-beat': '60000,60000']body=''
2020-02-25 12:27:16,143 - DEBUG - Sending frame: ['SUBSCRIBE', '\n', 'ack:auto\n', 'activemq.subscriptionName:subscriber\n']
2020-02-25 12:30:16,144 - DEBUG - Received frame: 'heartbeat', headers={}, body=None
2020-02-25 12:30:16,145 - ERROR - disconnected from broker, will attempt to reconnect...
2020-02-25 12:30:16,145 - INFO - Receiver loop ended
2020-02-25 12:30:16,320 - INFO - Attempting connection to host
2020-02-25 12:30:16,321 - INFO - Established connection to host
2020-02-25 12:30:16,321 - INFO - Starting receiver loop
2020-02-25 12:30:16,321 - DEBUG - Sending frame: ['STOMP', '\n', 'accept-version:1.2\n', 'client-id:\n', 'heart-beat:60000,60000\n']
2020-02-25 12:30:16,322 - DEBUG - Received frame: 'CONNECTED', headers={'server': 'ActiveMQ/5.15.2', 'heart-beat': '60000,60000']body=''
2020-02-25 12:30:16,322 - DEBUG - Sending frame: ['SUBSCRIBE', '\n', 'ack:auto\n', 'activemq.subscriptionName:subscriber]
Я вижу, что клиент и сервер оба пропускают отправку сердечных сокращений друг другу. Ниже приведен журнал, в котором клиент пропустил отправку сердцебиения. Соединение устанавливается в 12:03:32. Клиент отправляет первое сердцебиение в 12:03:32 и затем подписывается на пункт назначения ActiveMQ. Он продолжает получать сообщения, поэтому есть активность, до 12:12:08. Затем период бездействия до 12:13:32 (> 60 секунд) и соединение прерывается. Проблема в том, что сервер ActiveMQ слишком менее терпим к пропущенным ударам сердца от клиента. Поможет ли в этом случае увеличение интервала пульса от клиента до 120 секунд?
2020-02-26 12:03:32,498 - INFO - Established connection to host, port 61613
2020-02-26 12:03:32,499 - INFO - Sending frame: 'STOMP', headers={'heart-beat': '60000,60000'}
2020-02-26 12:03:32,512 - INFO - Received frame: 'CONNECTED', headers={'heart-beat': '60000,60000'}
2020-02-26 12:03:32,513 - INFO - Sending frame: 'SUBSCRIBE'
2020-02-26 12:04:27,924 - INFO - Received frame: 'MESSAGE'
.
.
2020-02-26 12:12:08,475 - INFO - Received frame: 'MESSAGE'
2020-02-26 12:13:32,519 - INFO - Received frame: 'heartbeat'
2020-02-26 12:13:32,548 - ERROR - disconnected from broker
Я также вижу проблемы, связанные с отсутствием сервера для отправки пульса, и клиент получает ошибку тайм-аута пульса. Я имею в виду отключение пульса с сервера, установив конфигурацию пульса в (120000,0). Есть предложения?