拒绝消息时设置 x-first-death-reason 或自定义 header (SpringAMQP)
Set x-first-death-reason or custom header while rejecting message (SpringAMQP)
我有 SpringBoot AMQP 应用程序,我在其中设置了 queue 的死信。无论如何在抛出 AmqpRejectAndDontRequeueException
时为 x-first-death-reason 设置自定义消息
我现在有这个
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "core.queue",
durable = "true",
arguments = {
@Argument(name = "x-dead-letter-exchange", value = RabbitConfiguration.ERROR_EXCHANGE),
@Argument(name = "x-dead-letter-routing-key", value = RabbitConfiguration.ERROR_ROUTING_KEY)
}
),
exchange = @Exchange(value = "core.exchange"),
key = "core.route")
)
public void errorListener(final Message message) {
try {
.......
} catch (IOException e) {
// I would like to set value for x-first-death-reason or set
// custom header if possible.
throw new AmqpRejectAndDontRequeueException(e.getMessage());
}
}
否; amqp 协议不允许消费者修改被拒绝的消息。您必须自己发布到 DLQ,而不是让 RabbitMQ 路由它。
我有 SpringBoot AMQP 应用程序,我在其中设置了 queue 的死信。无论如何在抛出 AmqpRejectAndDontRequeueException
我现在有这个
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = "core.queue",
durable = "true",
arguments = {
@Argument(name = "x-dead-letter-exchange", value = RabbitConfiguration.ERROR_EXCHANGE),
@Argument(name = "x-dead-letter-routing-key", value = RabbitConfiguration.ERROR_ROUTING_KEY)
}
),
exchange = @Exchange(value = "core.exchange"),
key = "core.route")
)
public void errorListener(final Message message) {
try {
.......
} catch (IOException e) {
// I would like to set value for x-first-death-reason or set
// custom header if possible.
throw new AmqpRejectAndDontRequeueException(e.getMessage());
}
}
否; amqp 协议不允许消费者修改被拒绝的消息。您必须自己发布到 DLQ,而不是让 RabbitMQ 路由它。