Dear all,
I'm trying to use a Blocking Connection in the python version of Qpid
Proton, in order to try to solve the problem of getting data from an
external source and sending it inside AMQP messages only when it is
available.
However, even if I explicitly set a low heartbeat value when creating a new
BlockingConnection(), I often get the following error:

Traceback (most recent call last):
  File "ConnectionExceptionIssue.py", line 29, in <module>
    AMQPsend("192.168.1.2:5672/topic://test.activemq.topic.001")
  File "ConnectionExceptionIssue.py", line 27, in AMQPsend
    sender.send(req);
  File
"/home/fullsuper/anaconda3/envs/tornado-qpid/lib/python3.8/site-packages/proton/_utils.py",
line 119, in send
    self.connection.wait(lambda: _is_settled(delivery), msg="Sending on
sender %s" % self.link.name,
  File
"/home/fullsuper/anaconda3/envs/tornado-qpid/lib/python3.8/site-packages/proton/_utils.py",
line 486, in wait
    raise ConnectionException(
proton._exceptions.ConnectionException: Connection amqp://192.168.1.2:5672
disconnected: Condition('amqp:resource-limit-exceeded', 'local-idle-timeout
expired')

To better analyze the problem, I tried writing this sample code:
https://pastebin.com/R8uJALAQ
The code should ideally send an "Hello World!" message every second to an
external broker.
I noticed that for higher heartbeat values (e.g. 7.5 seconds), the error
does not occur, while if I set a lower value (e.g. 1 second), I always get
this error.

Do you know why? Is it some sort of bug or is there something wrong in my
sample code?

Thank you very much,
Francesco Raviglione

Reply via email to