栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RabbitMQ(三)消息应答

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ(三)消息应答

看电影的几种情况
  • 自动应答:拿票走人
  • 手动应答:拿票:
    • 看完,走人
    • 没看,退票
    • 票过期了,丢掉
开启自动应答

声明消费的阶段,第二个参数

channel.basicConsume("q", true, deliver, cancel);
手动应答API

在回调里面

看完,走人

channel.basicAck(message.getEnvelope().getDeliveryTag(), false);
//false固定的

没看,退票

channel.basicReject(message.getEnvelope().getDeliveryTag(), true);
//true表示别丢

过期,丢掉

channel.basicReject(message.getEnvelope().getDeliveryTag(), false);
//false表示丢掉
测试看完走人
DeliverCallback deliver = (consumerTag, message) -> {
	Integer s = new Integer(new String(message.getBody()));
	channel.basicAck(message.getEnvelope().getDeliveryTag(), false);
	System.out.println(s);
};

两个消费者

没有问题

加点延迟看看
DeliverCallback deliver = (consumerTag, message) -> {
	try {
		TimeUnit.SECONDS.sleep(1);
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
	Integer s = new Integer(new String(message.getBody()));
	channel.basicAck(message.getEnvelope().getDeliveryTag(), false);
	System.out.println(s);
};

一个没延迟,一个有延迟


可以看到,默认的轮询不受效率影响,好吧学歪了。

在看完前终止程序


终止的有点快。。。
可以看到:

  • 246810是因为一开始有两个消费者
  • 13579是因为另一个程序突然终止了
  • 消息在意外情况会返回队列。

很安全

测试没看退票

我大于四就不收了

DeliverCallback deliver = (consumerTag, message) -> {
	Integer s = new Integer(new String(message.getBody()));
	if (s >= 5) {
		channel.basicReject(message.getEnvelope().getDeliveryTag(), true);
		System.out.println("拒绝了" + s);
	} else {
		channel.basicAck(message.getEnvelope().getDeliveryTag(), false);
		System.out.println(s);
	}
};

一个正常接收,一个拒绝大于四


可以看到,前者拒绝了579,59,9,说明被拒绝了,依旧进入了轮询

测试过期丢票
DeliverCallback deliver = (consumerTag, message) -> {
	Integer s = new Integer(new String(message.getBody()));
	if (s >= 5) {
		channel.basicReject(message.getEnvelope().getDeliveryTag(), false);
		System.out.println("拒绝了" + s);
	} else {
		channel.basicAck(message.getEnvelope().getDeliveryTag(), false);
		System.out.println(s);
	}
};



可以看到:

  1. 前者拒绝了6810,并丢弃了
  2. 后者也没有接收到他们
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/693907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号