本文针对 hyperf/amqp
组件
class DeadLetterQueue extends ConsumerMessage
{
protected $type = Type::DIRECT;
protected $exchange = '....';
protected $routingKey = '....';
protected $queue = '...';
// 重写方法配置死信交换机与routingKey
public function getQueueBuilder(): QueueBuilder
{
$builder = new QueueBuilder();
$builder->setQueue($this->getQueue());
// 设置死信交换机
// 消息进入死信交换机情况: 1.消息过期 2.队列达到最大长度 3.消息被拒绝(reject、nack),并且requeue=false
$builder->setArguments(new AMQPTable([
'x-dead-letter-exchange' => 'deadletter.exchange',
'x-dead-letter-routing-key' => 'deadletter.routingkey',
'x-message-ttl' => 20000,
]));
return $builder;
}
public function consumeMessage($data, AMQPMessage $message): string
{
var_dump($data);
if ($data < 5) {
return Result::DROP;
}
return Result::ACK;
}
}