目录
概述
代码实现
消费者
import com.aa.Utils.RabbitMqUtils;
import com.aa.Utils.SleepUtils;
import com.rabbitmq.client.CancelCallback;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;
import java.nio.charset.StandardCharsets;
public class Worker01 {
public static final String TASK_QUEUE_NAME = "queueName";
public static void main(String[] args) throws Exception{
Channel channel = RabbitMqUtils.getChannel();
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
System.out.println("C1消息等待消息, 处理时间较短");
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
SleepUtils.sleep(1);
System.out.println("收到消息 :" + message);
/*
1.消息标记 tag
2.是否批量应答未应答消息
*/
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
};
CancelCallback cancelCallback = (consumerTag) -> {
System.out.println(consumerTag+"消费者取消消费接口回调逻辑");
};
// 设置不公平分发
int prefetchCount = 1;
channel.basicQos(prefetchCount);
// 采用手动应答
boolean autoAck = false;
channel.basicConsume(TASK_QUEUE_NAME, autoAck, deliverCallback, cancelCallback);
}
}