등록 된 웹 후크에 대한 데이터를 제출할 때 RabbitMq을 사용하고 있습니다.RabbitMq : 중복 메시지 대체
기본 정보 : 연락처가 시스템에서 생성되는 경우, 메시지가 큐에 배치되고, 소비자는 등록 된 URL로 나중에 훅 데이터를 전송한다.
내 질문에 : 연락처가 5 초에 두 번 업데이트되고 두 메시지가 모두 대기열에 남아있을 수 있습니다. 그러나 두 번째 메시지가 대기중인 경우 첫 번째 메시지가 제거됩니다.
나는 메시지를 수동으로 삭제할 수 없다는 것을 알고있다. 그러나 메시지에 ID를 설정하는 것이 가능하고 동일한 ID를 가진 두 개의 메시지가 같은 큐에 있으면 첫 번째 메시지가 자동으로 제거/대체됩니까? 하나의 요청 만 URL에 전송됩니다. 메시지 자체에 메시지 ID를 설정할 수 있다는 것을 알고 있습니다. 그러나 나는 옛것을 대체 할 아무것도 찾지 못했다.
내 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은 내가
https://github.com/videlalvaro/php-amqplib amqplib하여 PHP를 사용하고 있습니다. 플로
그건 내가 생각한 것입니다. 그러나 확실하지 않았습니다. 도움을 주셔서 감사합니다. – Flow