zoukankan      html  css  js  c++  java
  • spring cloud bus

    RabbitMQ

    在docker中运行rabbitmq

    docker run -d -p 5672:5672  -p 8080:15672 rabbitmq:3-management

    浏览器打开:http://10.202.203.29:8080/

    默认用户名/密码都是guest

    在Admin页面添加用户

    新添加的用户是没有权限的

    点击用户名进去,按提示添加权限

    这样就可以在程序中访问了。

    创建spring boot 项目,添加pom依赖

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bus-amqp</artifactId>
            </dependency>
    View Code

    添加发送类Sender

    import org.springframework.amqp.core.AmqpTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    @Component
    public class Sender {
        @Autowired
        private AmqpTemplate amqpTemplate;
    
        public void send(){
            String context="hello "+new Date();
            System.out.println("Sender: "+context);
            amqpTemplate.convertAndSend("hello",context);
        }
    }
    View Code

    添加接收类Receiver

    import org.springframework.amqp.rabbit.annotation.RabbitHandler;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    
    @Component
    
    public class Receiver {
        @RabbitListener(queues = "hello")
        @RabbitHandler
        public void process(String hello){
            System.out.println("Receiver: "+hello);
        }
    }
    View Code

    注意这里的@RabbitListener(queues = "hello")不要加在类上,而是加在方法上,官方的教程这里是错误的

    添加配置类RabbitConfig

    import org.springframework.amqp.core.Queue;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RabbitConfig {
        @Bean
        public Queue helloQueue(){
            return new Queue("hello");
        }
    }
    View Code

    配置文件

    spring.application.name=rabbitmq-hello
    
    spring.rabbitmq.host=10.202.203.29
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=springcloud
    spring.rabbitmq.password=123456
    View Code

    单元测试

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class RabbitmqHelloApplicationTests {
        @Autowired
        private Sender sender;
        @Test
        public void contextLoads() {
            sender.send();
        }
    }
    View Code

    启动应用,在RabbitMQ管理界面中查看连接

    运行单元测试,可以在控制台看到结果

    再查看管理页面

     开启应用的接受监控后,可以在rabbitmq管理界面直接发送消息,需要指定编码格式

    在控制台可以看到接收到了消息

  • 相关阅读:
    数据仓库- 建模理念
    SpringBoot- springboot集成Redis出现报错:No qualifying bean of type 'org.springframework.data.redis.connection.RedisConnectionFactory'
    CDH- cdh kafka已经卸载了,但是服务器还有kafka-topics这些命令可用,导致重新安装kafka出现问题
    【JZOJ6217】【20190614】最大面积
    【JZOJ6216】【20190614】序列计数
    【JZOJ6228】【20190621】ni
    【JZOJ6227】【20190621】ichi
    【JOISC2019|2019】【20190622】cake3
    【JOISC2018|2019】【20190622】mergers
    【JOISC2018|2019】【20190622】minerals
  • 原文地址:https://www.cnblogs.com/uptothesky/p/8287541.html
Copyright © 2011-2022 走看看