zoukankan      html  css  js  c++  java
  • Rabbitmq 简单示例

    之前写了两篇,感觉对于入门的小伙伴,不太友好。

    所以这次,就写一个简单的。

    一,架包

    implementation("org.springframework.boot:spring-boot-starter-amqp:2.5.4")

    二,配置config

    spring.rabbitmq.host = 127.0.0.1
    spring.rabbitmq.port = 5672
    spring.rabbitmq.username = guest
    spring.rabbitmq.password = guest

    三,配置queuq-exchange--topic

    package com.tenyears.webAD.config.mq;
     
    import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
    import org.springframework.amqp.core.Binding;
    import org.springframework.amqp.core.BindingBuilder;
    import org.springframework.amqp.core.Queue;
    import org.springframework.amqp.core.TopicExchange;
    import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
    import org.springframework.amqp.rabbit.connection.ConnectionFactory;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
     
    /**
     * @description :
     * @auther Tyler
     * @date 2021/8/25
     */
     
    @Configuration
    @EnableApolloConfig
    public class RabbitMQConfig extends MqBaseConfig {
        public final static String my_queue= "my_queue";
        public final static String my_topic = "my_topic";
     
        //声明 queue
        @Bean
        public Queue MY_QUEUE() {
            return new Queue(my_queue,true);
        }
     
        //声明 topic
        @Bean
        TopicExchange exchange() {
            return new TopicExchange(my_topic);
        }
     
        // 绑定 queue , exchange, routing_key
        @Bean
        Binding bindingExchangeMessage() {
            return BindingBuilder.bind(AD_SCHEDULE_QUEUE()).to(exchange()).with(my_queue);
        }
     
     
    }

    主要缩明一下  routing_key 作为路由键,

    假设 改成  my_queue#,

    则可以匹配多个 queue,比如: my_queue1 , my_queue2............

    四,生产者

    @GetMapping(value = "test1")
    public String test1(@RequestBody String str) {
    //参数1:exchange
    //参数2:routeKey
    //参数3:消息
           rabbitTemplate.convertSendAndReceive(RabbitMQConfig.my_topic,RabbitMQConfig.my_queue , "123");
            return "已发送";
        }

    五,消费者

    @Component
    @Lazy(false)
    @RabbitListener(queues = RabbitMQConfig.my_queue)
    public class AdScheduleExtendHandler {
      
     
        @RabbitHandler
        public void test(String a)
        {
            System.out.println("=================="+a);
        }
     
    }
  • 相关阅读:
    JavaScript 深入之从原型到原型链(转载)
    Javascript 异步加载详解(转载)
    JavaScript 运行机制(转载)
    js学习总结----数据类型检测的四种方式(转载)
    GitHub常用指令
    项目部署到linux云服务器最简单的方式
    把MongoDB写成服务
    浏览器中的事件循环
    使用Nodejs计算文件夹中所有文件的大小
    前端web模块化开发之ESModules
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/15186709.html
Copyright © 2011-2022 走看看