Можно ли запланировать сообщение с помощью RabbitMQ, а также удалить сообщение (которое планируется обработать) при соблюдении определенных условий? У нас есть требование, когда нам нужно вызвать внешнюю службу для получения некоторых данных. Вызов асинхронный. Клиент вызывает конечную точку API сервера, сообщая о необходимых ему данных. Сервер просто отвечает, подтверждая, что он получил запрос от клиента. Внутренне сервер также начинает обработку клиентского запроса и вызывает конечную точку клиентского API с фактическим ответом на запрос, который он получил когда-то обратно от клиента.
Существует ограничение по времени (30 секунд), пока клиенту не нужно ждать ответа от сервера. Если клиент получит ответ в течение 30 секунд, он продолжит выполнение. Даже если клиент не получит ответа от сервера в течение 30 секунд, он продолжит выполнение других шагов.
Каждую секунду между клиентом и сервером происходят тысячи независимых транзакций (запрос и ответ). Как клиент может наиболее эффективно отслеживать запросы и полученные ответы с помощью RabbitMQ. Может ли плагин RabbitMQ rabbitmq_delayed_message_exchange использовать для этого сценария, в котором клиент будет помещать новые сообщения в очередь вместе с заголовком x-delay (30 секунд)? Как можно удалить запланированное сообщение из очереди, если клиент получает ответ от сервера до 30 секунд?