中间键安装
- 中间键选择的是rabbitmq
- macos 直接brew install rabbitmq 既可以
直接上代码
生产者
一次性发出30个消息
public void send() {
for (int i=0; i < 30; i++){
String context = "hello--- " +i;
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("hello", context);
}
消费者
单线程消费配置
@Bean("customContainerFactory")
public SimpleRabbitListenerContainerFactory containerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConcurrentConsumers(1); //设置线程数
factory.setMaxConcurrentConsumers(20); //最大线程数
configurer.configure(factory, connectionFactory);
return factory;
}
sentinel控制流量consume
@RabbitHandler
public void process(String hello) {
Entry entry = null;
// 1.5.0 版本开始可以直接利用 try-with-resources 特性
try {
entry = SphU.entry("hello");
System.out.println("Receiver : threadId-" + Thread.currentThread().getId() + "---" + hello);
} catch (BlockException ex) {
// 处理被流控的逻辑
System.out.println(hello + "---blocked---threadId-" + Thread.currentThread().getId());
} finally {
if (entry != null) {
entry.exit();
}
}
}
日志输出
Sender : hello--- 0
Sender : hello--- 1
Sender : hello--- 2
Sender : hello--- 3
Sender : hello--- 4
Sender : hello--- 5
Sender : hello--- 6
Sender : hello--- 7
Sender : hello--- 8
Sender : hello--- 9
Sender : hello--- 10
Sender : hello--- 11
Sender : hello--- 12
Sender : hello--- 13
Sender : hello--- 14
Sender : hello--- 15
Sender : hello--- 16
Sender : hello--- 17
Sender : hello--- 18
Sender : hello--- 19
Sender : hello--- 20
Sender : hello--- 21
Sender : hello--- 22
Sender : hello--- 23
Sender : hello--- 24
Sender : hello--- 25
Sender : hello--- 26
Sender : hello--- 27
Sender : hello--- 28
Sender : hello--- 29
Receiver : threadId-19---hello--- 0
hello--- 1---blocked---threadId-19
hello--- 2---blocked---threadId-19
hello--- 3---blocked---threadId-19
hello--- 4---blocked---threadId-19
hello--- 5---blocked---threadId-19
hello--- 6---blocked---threadId-19
hello--- 7---blocked---threadId-19
hello--- 8---blocked---threadId-19
hello--- 9---blocked---threadId-19
hello--- 10---blocked---threadId-19
hello--- 11---blocked---threadId-19
hello--- 12---blocked---threadId-19
hello--- 13---blocked---threadId-19
hello--- 14---blocked---threadId-19
hello--- 15---blocked---threadId-19
hello--- 16---blocked---threadId-19
hello--- 17---blocked---threadId-19
hello--- 18---blocked---threadId-19
hello--- 19---blocked---threadId-19
hello--- 20---blocked---threadId-19
hello--- 21---blocked---threadId-19
hello--- 22---blocked---threadId-19
hello--- 23---blocked---threadId-19
hello--- 24---blocked---threadId-19
hello--- 25---blocked---threadId-19
hello--- 26---blocked---threadId-19
hello--- 27---blocked---threadId-19
hello--- 28---blocked---threadId-19
hello--- 29---blocked---threadId-19
可以看到明显收到了限制
网友评论