微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java - RabbitMQ 使用队列中的一些消息

如何解决Java - RabbitMQ 使用队列中的一些消息

场景是我想从一个队列中消费一定数量的消息,假设是 10,然后将消费的消息生成到另一个队列。基本上,我想要铲功能,但我不想一次移动所有消息。例如,假设我的队列有 100 条消息,我想使用其中的 10 条并将其他 90 条留在队列中。

无需连续调用 channel.basicGet() 10 次即可实现此功能吗?我如何使用 channel.basicConsume()

实现这样的目标
try {
    ConnectionFactory factory = new ConnectionFactory();
    // credentials
    Connection connection = factory.newConnection();
    Channel channel = connection.createChannel();
    channel.basicQos(10);

    final DefaultConsumer defaultConsumer = new DefaultConsumer(channel) {
        @Override
        public void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body)
            throws IOException {
            long deliveryTag = envelope.getDeliveryTag();
            // do some magic to prevent all the messages from being consumed
            channel.basicpublish("my-exchange","my-routing-key",null,body);
            channel.basicAck(deliveryTag,false);
        }
    };

    channel.basicConsume(
        "my-queue",false,"my-consumer-tag",defaultConsumer);

} catch (Exception e) {
    e.printstacktrace();
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。