gpt4 book ai didi

php - RabbitMq:替换重复的消息

转载 作者:行者123 更新时间:2023-12-04 18:05:24 28 4
gpt4 key购买 nike

我正在使用 RabbitMq 为已注册的网络 Hook 提交数据。

基本信息:如果在系统中创建了一个联系人,消息将被放入队列中,消费者稍后将 Hook 数据发送到注册的 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();

顺便说一句,我正在使用 php amqplib https://github.com/videlalvaro/php-amqplib .

感谢帮助弗洛

最佳答案

RabbitMQ 不会以这种方式删除/过滤消息。您必须在应用程序级别执行此操作,可能使用布隆过滤器之类的东西。

关于php - RabbitMq:替换重复的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27784270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com