美文网首页
消费端限流

消费端限流

作者: 快点给我想个名 | 来源:发表于2019-06-30 21:57 被阅读0次
  • Producer
public class Producer {

    public static void main(String[] args) throws IOException, TimeoutException {

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.6.99");
        factory.setPort(5672);
        factory.setVirtualHost("/");

        Connection connection = factory.newConnection();

        Channel channel = connection.createChannel();

        for(int i = 0;i<10;i++){
            channel.basicPublish("exchange","return.key",false,null,("hello world"+i).getBytes());
        }
    }
}
  • Consumer
public class Consumer1 {

    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.6.99");
        factory.setPort(5672);
        factory.setVirtualHost("/");

        Connection connection = factory.newConnection();

        Channel channel = connection.createChannel();

        channel.exchangeDeclare("exchange","topic",true);
        channel.queueDeclare("queueName", true, false, false, null);

        channel.queueBind("queueName","exchange","return.key");

        /**
         * 增加限流
         */
        channel.basicQos(0,2,false);
        /**
         * 关闭自动确认消息
         */
        channel.basicConsume("queueName",false,new MyConsumer(channel));


    }
}
  • 自定消息接收
public class MyConsumer extends DefaultConsumer {

    private Channel channel;
    /**
     * Constructs a new instance and records its association to the passed-in channel.
     *
     * @param channel the channel to which this consumer is attached
     */
    public MyConsumer(Channel channel) {
        super(channel);
        this.channel = channel;
    }


    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
        System.out.println("consumerTag "+consumerTag);
        System.out.println("envelope "+envelope);
        System.out.println("body "+new String(body));
        /**
         * 应答接收到的消息
         */
        channel.basicAck(envelope.getDeliveryTag(),false);

    }
}

相关文章

  • 消费端限流

    Producer Consumer 自定消息接收

  • RabbitMQ高级特性(2)

    一、消费端限流 1.什么是消费端的限流 假设一个场景,首先,Rabbitmq服务器有上万条未处理的消息,我们随便打...

  • RabbitMQ 消费端限流

    RabbitMQ 提供了一种 qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数据的消息(通过基于...

  • RabbitMQ消费端的限流策略

    假设一个场景,由于我们的消费端突然全部不可用了,导致rabbitMQ服务器上有上万条未处理的消息,这时候如果没做任...

  • RabbitMQ消费端的限流策略

    为什么需要消费端的限流? 假设一个场景,我们Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户...

  • RabbitMQ消费端的限流策略

    为什么需要消费端的限流? 假设一个场景,我们Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户...

  • RabbitMQ 消费端的限流策略

    假设一个场景,由于我们的消费端突然全部不可用了,导致 rabbitMQ 服务器上有上万条未处理的消息,这时候如果没...

  • RabbitMQ精讲系列教程高级篇七 消费端限流

    消费端的限流? 场景: 假设,我们mq服务器上有上万条未处理的消息,我们随便打开一个消费者客户端,会出现什么样的情...

  • RabbitMQ高级特性-3.消费端限流

    1、限流的概念 上图中 第一个参数是消费端,消息限制的大小 第二个参数是指在消费端一次能处理多少条消息 第三个参数...

  • RabbitMQ高级特性

    0. 前言 本文内容分为如下三部分RabbitMQ高级特性 消息可靠性投递Consumer ACK消费端限流TTL...

网友评论

      本文标题:消费端限流

      本文链接:https://www.haomeiwen.com/subject/ogqicctx.html