生产者代码
package com.example.newrabbitmq;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest( classes = NewRabbitMqApplication.class)
@RunWith( SpringRunner.class )
class NewRabbitMqApplicationTests {
@Autowired
private RabbitTemplate rabbitTemplate;
// 工作模式
@Test
void contextLoads2() {
for (int i = 0 ; i <= 10 ; i++ ){
rabbitTemplate.convertAndSend( "springboot_work", "spring整合的工作模式 "+i );
}
}
}
消费者代码
package com.example.newrabbitmq.serive;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class Customer2 {
@RabbitListener( queuesToDeclare = @Queue("springboot_work") )
public void test1(String s) throws InterruptedException {
Thread.sleep(100);
System.out.println( "消费者1" + s);
}
@RabbitListener( queuesToDeclare = @Queue("springboot_work") )
public void test2(String s){
System.out.println( "消费者2" + s);
}
}
运行截图


反思与改进
我们发现这样的分配机是平均分配,我们希望能实现能者多劳。可以通过更改配置文件的参数来解决这一个问题。
spring:
rabbitmq:
host: 106.15.73.43
port: 5672
username: admin
password: 123
virtual-host: /rabbitmq_zhj
listener:
simple:
# 公平分发
prefetch: 1

版权声明:本文为qq_42091436原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。