Skip to content Skip to sidebar Skip to footer

Rabbitmq Exchange Becomes Unresponsive After Some Amount Of Time

I have RabbitMQ server running in Docker and two python clients that connect to the server and send messages to each other using headers exchange. Message rate is about 10/s. After

Solution 1:

I found that I misused pika. As pika documentation states, it's not safe to share connection across multiple threads. The only way you can interact with connection from other threads is to use add_callback_threadsafe function. In my example it should look like this:

   def __publishProcedure(self):
        print("Start publishing")
        l_msgCounter = 0
        while self.__isRun:
            l_msgCounter += 1
            l_cb = functools.partial(self.__publish, l_msgCounter)
            self.__connection.ioloop.add_callback_threadsafe(l_cb)
            time.sleep(0.1)

    def __publish(self, p_msgCounter):
        self.__channelProducer.basic_publish(
            exchange=self.__outgoingExch,
            routing_key="#",
            body=str(p_msgCounter),
            properties=pika.BasicProperties(headers=self.__headers)
        )

Post a Comment for "Rabbitmq Exchange Becomes Unresponsive After Some Amount Of Time"