springboot integra rabbitmq y simplemente ejemplifica el uso de varios modelos de mensajes entre productores y consumidores

Código de proyecto completo https://gitee.com/glrno1/springboot_rabbitmq

Ejemplos de modelos de producción

/**
*生产者模型
*/
@RestController
public class RabbitMqSendControler {
    
    

    @Autowired
    RabbitTemplate rabbitTemplate;

    /**
     * 直连消息模型
     * @param message
     */
    @PostMapping("/sentTest")
    public void sentTest(String message){
    
    
        System.out.println("发送消息:"+message);
        rabbitTemplate.convertAndSend("hello",message);
    }

    /**
     * 工作队列消息模型
     * @param message
     */
    @PostMapping("/sentTest1")
    public void sentTest1(String message){
    
    
        for(int i=0;i<=20;i++){
    
    
            System.out.println("发送消息:"+message+i);
            rabbitTemplate.convertAndSend("work_quene",message+i);
        }
    }

    /**
     * 订阅模式-广播(fanout)
     * @param message
     */
    @PostMapping("sentTest2")
    public void sentTest2(String message){
    
    
        System.out.println("发送消息:"+message);
        //第一个参数交换机名称,第二个参数,路由keyroutingkey,第三个参数,传递的消息
        rabbitTemplate.convertAndSend("exchange_fanout","",message);
    }

    /**
     * 订阅模式-路由(route)
     * @param message
     */
    @PostMapping("sentTest3")
    public void sentTest3(String message){
    
    
        System.out.println("发送消息:"+message);
        //第一个参数交换机名称,第二个参数,路由keyroutingkey,第三个参数,传递的消息
        rabbitTemplate.convertAndSend("exchange_route","warning",message);
    }

    /**
     * 订阅模式-动态路由(topic)
     * @param message
     */
    @PostMapping("sentTest4")
    public void sentTest4(String message){
    
    
        System.out.println("发送消息:"+message);
        //第一个参数交换机名称,第二个参数,路由keyroutingkey,第三个参数,传递的消息
        rabbitTemplate.convertAndSend("exchange_topic","user.name.firstname",message);
    }



}

Ejemplos de modelos de consumo

/**
消费者模型
*/

@Component
public class RabbitMqReceiveControler {
    
    

    @Autowired
    RabbitTemplate rabbitTemplate;

    // ================================消息直连=================================
    /**
     *直连消息模型
     * @param message
     */
    @RabbitListener(queuesToDeclare = @Queue("hello"))
    @RabbitHandler
    public void receiveTest(String message){
    
    
        System.out.println("消费者消费:"+message);
    }

    // ================================Work_quene=================================
    /**
     *工作队列消息模型
     * 消费者1
     * @param message
     */
    @RabbitListener(queuesToDeclare = @Queue("work_quene"))
    public void receiveTest1(String message){
    
    
        System.out.println("消费者1消费:"+message);
    }

    /**
     *工作队列消息模型
     * 消费者2
     * @param message
     */
    @RabbitListener(queuesToDeclare = @Queue("work_quene"))
    public void receiveTest2(String message){
    
    
        System.out.println("消费者2消费:"+message);
    }

    // ================================fanout=================================
    /**
     * 订阅模型-广播(fanout)
     * 消费者1
     */
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue,
            exchange = @Exchange(name="exchange_fanout",type = "fanout")
    ))
    public void receiveTest3(String message){
    
    
        System.out.println("消费者1消费:"+message);
    }

    /**
     * 订阅模型-广播(fanout)
     * 消费者2
     */
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue,//创建临时队列
            exchange = @Exchange(name="exchange_fanout",type = "fanout")//绑定交换机类型
    ))
    public void receiveTest4(String message){
    
    
        System.out.println("消费者2消费:"+message);
    }

    // ================================route=================================
    /**
     * 订阅模型-路由(route)
     * 消费者1
     */
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue,
            key = {
    
    "warning","info"},
            exchange = @Exchange(name = "exchange_route",type = "direct")
    ))
    public void receiveTest5(String message){
    
    
        System.out.println("消费者1消费:"+message);
    }

    /**
     * 订阅模型-路由(route)
     * 消费者2
     */
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue,//创建临时队列
            key = {
    
    "info"},//匹配路由key
            exchange = @Exchange(name = "exchange_route",type = "direct")//绑定交换机
    ))
    public void receiveTest6(String message){
    
    
        System.out.println("消费者2消费:"+message);
    }

    // ================================topic=================================
    /**
     * 订阅模型-动态路由(topic)
     * 消费者1
     */
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue,
            key = {
    
    "user.*"},
            exchange = @Exchange(name = "exchange_topic",type = "topic")
    ))
    public void receiveTest7(String message){
    
    
        System.out.println("消费者1消费:"+message);
    }

    /**
     * 订阅模型-动态路由(topic)
     * 消费者2
     */
    @RabbitListener(bindings = @QueueBinding(
            value = @Queue,//创建临时队列
            key = {
    
    "user.#"},//匹配路由key
            exchange = @Exchange(name = "exchange_topic",type = "topic")//绑定交换机
    ))
    public void receiveTest8(String message){
    
    
        System.out.println("消费者2消费:"+message);
    }

}

Supongo que te gusta

Origin blog.csdn.net/qq_41454044/article/details/111664646
Recomendado
Clasificación