Я использую RabbitMq для отправки данных для зарегистрированных веб-крючков.RabbitMq: заменить дублированные сообщения
базы информация: Если контакт создается в системе, сообщение помещается в очереди и потребитель позже посылают данные крючков зарегистрированного URL.
На мой вопрос: Возможно, что контакт обновляется через 5 секунд в два раза и что оба сообщения все еще находятся в очереди. Но я бы хотел, чтобы второе сообщение было поставлено в очередь, что первое сообщение будет удалено.
Я знаю, что я не могу удалить сообщение вручную. Но возможно ли установить идентификатор в сообщении, и если два сообщения с одним и тем же идентификатором находятся в одной очереди, первый из них автоматически удаляется/заменяется? То, что на адрес отправляется только один запрос. Я знаю, что вы можете установить идентификатор сообщения в самом сообщении. Но я ничего не нашел, чтобы заменить старый.
Мой PHP код (упрощенный):
$connection = new AMQPConnection('localhost', 5672, 'test', 'test');
$channel = $connection->channel();
$channel->queue_declare(self::QUEUE_NAME, false, true, false, false);
$data = array(
'model' => get_class($subject),
'id' => $subject->getId(),
'event' => $event->getName()
);
$messageProperties = array(
'message_id' => get_class($subject) . '-' . $subject->getId()
);
$channel->basic_publish(new AMQPMessage(json_encode($data), $messageProperties), '', self::QUEUE_NAME);
$channel->close();
$connection->close();
Btw я использую РНР amqplib https://github.com/videlalvaro/php-amqplib.
Спасибо за помощь Flo
Это то, что я думал. Но не уверен. Спасибо за помощь. – Flow