zoukankan      html  css  js  c++  java
  • 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);
        };
    }
  • 相关阅读:
    nested exception is java.io.FileNotFoundException: class path resource [spring-mybatis.xml] cannot be opened
    jdbc批量插入实现大批量数据快速插入
    setInterval设置停止和循环
    在java中使用dom4j解析xml(示例代码)
    获取请求端的ip地址
    行为型之责任链模式
    行为型之策略模式
    行为型之命令模式
    行为型之模板方法模式
    结构型之门面模式
  • 原文地址:https://www.cnblogs.com/yz-bky/p/13060625.html
Copyright © 2011-2022 走看看