1、接收方代码
package com.example.demo.mq;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class Test1QueueReceiver {
//concurrency = "2-5"表示这个队列最小2个,最大5个消费者
//mqlistenerContainer需要在config中配置
@RabbitListener(queues = "test1_Queue",concurrency = "2-5",containerFactory = "mqlistenerContainer")
public void process(String mes, Channel channel, Message message) {
System.err.println(mes);
//消息的所有相关信息都可以在message中找到
System.err.println(message.toString());
}
}
2、在RabbitmqConfig中配置mqlistenerContainer
@Autowired
private CachingConnectionFactory connectionFactory;
/**
* 限流
* @return
*/
@Bean(name = "mqlistenerContainer")
public SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory(){
SimpleRabbitListenerContainerFactory factory=new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPrefetchCount(75);
return factory;
}
完成上述操作,在控制台查看队列信息
此时是两个消费者,当队列中积压的消息过多就会变成5个消费者。每个消费者单位时间内接收到消息上限是75条