• Springboot整合rabbitMQ


    加入依赖

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>

    配置文件

    spring:
      application:
        name: rabbitmq-springboot
      rabbitmq:
        host: 127.0.0.1
        port: 5672
        username: ems
        password: 123
        virtual-host: /ems

    生产者:

    @SpringBootTest
    class RabbitmqSpringbootApplicationTests {
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
        //动态路由  订阅模式 topic
        @Test
        public void testTopic()
        {
            rabbitTemplate.convertAndSend("topics","order.save","user.save路由消息");
        };
        //routing路由模式 direct
        @Test
        public void testDirect()
        {
            rabbitTemplate.convertAndSend("logs_directs","info","发送info的key路由");
        };
        //fanout广播
        @Test
        void testfanout()
        {
            rabbitTemplate.convertAndSend("logs","","Fanout的模型发送的消息");
        };
        @Test
        void testwork()
        {
            for (int i = 0; i < 10; i++) {
                rabbitTemplate.convertAndSend("work","work模型");
            }
        };
    
        @Test
        void testHello() {
            rabbitTemplate.convertAndSend("hello","hello world");
        }
    
    }

    消费者1

    @Component
    //监听那个队列
    //@Queue队列默认设置就是最常用的 持久化  非独占  不是自动删除队列
    @RabbitListener(queuesToDeclare = @Queue("hello"))
    public class HelloCustomer {
        //当我们从hello队列中取出消息时的回调方法
        @RabbitHandler
        public void receivel(String message)
        {
            System.out.println("message="+message);
        };
    }

    消费者2

    @Component
    public class WorkCustomer {
        @RabbitListener(queuesToDeclare = @Queue("work"))
        public void receivel1(String message)
        {
            System.out.println("message1"+message);
        };
        @RabbitListener(queuesToDeclare = @Queue("work"))
        public void receivel2(String message)
        {
            System.out.println("message2"+message);
        };
    }

    消费者3

    @Component
    public class FanoutCustomer {
        @RabbitListener(bindings = {
                @QueueBinding(
                        value = @Queue,//不指定值就是创建临时队列
                        exchange = @Exchange(value = "logs",type = "fanout")//绑定交换机
                )
        })
        public void receivel1(String message)
        {
            System.out.println("message-1"+message);
        };
        @RabbitListener(bindings = {
                @QueueBinding(
                        value = @Queue,
                        exchange = @Exchange(value = "logs",type = "fanout")
                )
        })
        public void receivel2(String message)
        {
            System.out.println("message-2"+message);
        };
    }

    消费者4

    @Component
    public class DirectCustomer {
        @RabbitListener(bindings =
        @QueueBinding(
                value = @Queue,
                exchange = @Exchange(value = "logs_directs",type = "direct"),
                key = {"info","error","warning"}
        )
        )
        public void receivel1(String message)
        {
            System.out.println("message-1"+message);
        };
        @RabbitListener(bindings = @QueueBinding(
                value = @Queue,
                exchange = @Exchange(value = "logs_directs",type = "direct"),
                key = {"error"}
        ))
        public void receivel2(String message)
        {
            System.out.println("message-2"+message);
        };
    }

    消费者5

    @Component
    public class TopicCoustomer {
        @RabbitListener(bindings =@QueueBinding(
                value = @Queue,
                exchange = @Exchange(value = "topics",type = "topic"),
                key = {"user.*"}
        ))
        public void receivel1(String message)
        {
            System.out.println("message-1"+message);
        };
        @RabbitListener(bindings = @QueueBinding(
                value = @Queue,
                exchange = @Exchange(value = "topics",type = "topic"),
                key = {"order.#","user.#"}
        ))
        public void receivel2(String message)
        {
            System.out.println("message-2"+message);
        };
    }
  • 相关阅读:
    [css] BFC规则以及解决方法
    [css] 利用border制作三角型
    初学java注解编程 记录错误及解决办法
    springmvc 注解 配置文件解释
    log4net详解(转载)
    数据库的隔离级别
    Arcgis 几何网络分析
    Spring配置文件详解 – applicationContext.xml文件路径
    wpf 线程
    wpf 保存控件中的内容为图片格式
  • 原文地址:https://www.cnblogs.com/yz-bky/p/13060625.html
Copyright © 2020-2023  润新知