zoukankan      html  css  js  c++  java
  • 简单的使用rabbitmq的例子

    1.创建了两个项目 :

    (1).spring_cloud_rabbitmq_send 消息发送者

    (2).spring_cloud_rabbitmq_receive  消息接受者

    2. 添加rabbitmq依赖

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

    3.编写具体的消息发送者

    (1)配置application.yml

    spring:
      application:
        name: rabbitmq-send
      rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest
    #不分配端口,默认使用8080

    (2)创建rabbitmq配置类,添加一个名为hello的队列

     1 /**
     2  * @author liuboren
     3  * @Title:Rabbit配置类
     4  * @Description:
     5  * @date 2018/6/27 14:57
     6  */
     7 @Configuration
     8 public class RabbitConfig {
     9     public final static String QUEUE_NAME = "hello";
    10 
    11     @Bean
    12     public Queue helloQueue(){
    13       return new Queue(QUEUE_NAME);
    14     }
    15 
    16 }

    (3)编写具体的发送组件

     1 /**
     2  * @author liuboren
     3  * @Title:消息发送者
     4  * @Description:
     5  * @date 2018/6/27 14:40
     6  */
     7 @Component
     8 public class Sender {
     9 
    10     //通过注入的这个类来传递消息
    11     @Autowired
    12     private AmqpTemplate rabbitTemplate;
    13 
    14     public void send(){
    15         String context = "hello"+ new Date();
    16         System.out.println("Sender :"+ context);
    17         
    18         //hello为创建的队列名,context为发送的消息
    19         this.rabbitTemplate.convertAndSend("hello",context);
    20     }
    21 
    22 }

    (4)创建一个访问接口,用以发送消息

    /**
     * @author liuboren
     * @Title:发送消息的接口
     * @Description:
     * @date 2018/6/27 15:36
     */
    @RestController
    public class SendController {
    
        @Resource
        private Sender sender;
    
        @GetMapping("send")
        public String send(){
            sender.send();
            return "消息已发送..";
        }
    }

    4. 编写具体的消息接受者

    (1)application.yml

    spring:
    application:
    name: rabbitmq-receive
    rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
    server:
    port: 8081

    (2)编写消息接受者组件

     1 /**
     2  * @author liuboren
     3  * @Title:消息接受者
     4  * @Description:
     5  * @date 2018/6/27 14:54
     6  */
     7 @Component
     8 //监听hello队列
     9 @RabbitListener(queues = "hello")
    10 public class Receive {
    11 
    12     //处理接受到的消息
    13     @RabbitHandler
    14     public void process(String hello){
    15         System.out.println("Receiver:"+hello);
    16     }
    17 }

    5. 测试

    (1)启动消息发送者,多次访问http://localhost:8080/send

    控制台输出:

    注意这时候我们还没有启动消息接受者,所有发送的消息都在消息队列里面

    可以访问 http://localhost:15672/  查看rabbitmq的管理页面

    我们可以看到消息队列里面有21条消息

    (2)我们启动消息接受者应用

    可以看到应用启动好以后,接收到了消息

    我们再次访问http://localhost:15672

    发现队列此时已经没有消息.

    这样一个简单的RabbitMQ应用就完成了.

    Github地址:https://github.com/liuboren0617/rabbit_demo

  • 相关阅读:
    Jmeter Beanshell Assertion 成功或失败;这样beanshell的结果就可以在聚合报告的错误率中体现了;
    HDU-1233-还是畅通工程(最小生成树prim)
    HDU-1233-还是畅通工程(最小生成树kruscal)
    Hrbust 1794敌兵布阵(树状数组应用)
    Hrbust 2061消息队列(优先队列应用)
    Hrbust 1835 最长递增子序列(dp)
    "尚学堂杯"哈尔滨理工大学第七届程序设计竞赛——Hrbust2326 Blind Father
    "尚学堂杯"哈尔滨理工大学第七届程序设计竞赛——Hrbust2327 Collection Game
    "尚学堂杯"哈尔滨理工大学第七届程序设计竞赛——Hrbust2330 Final Ugly English
    HDU-1794 敌兵布阵(线段树单点更新求区间和)
  • 原文地址:https://www.cnblogs.com/xisuo/p/9266751.html
Copyright © 2011-2022 走看看