• Spring整合RabbitMQ-配制文件方式-3-消息拉模式


    拉消息的消费者
    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.context.support.AbstractApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class ConsumerGet {
    
        public static void main(String[] args) throws Exception {
            AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-rabbit.xml");
    
            RabbitTemplate template = context.getBean(RabbitTemplate.class);
    
    
            Message receive = template.receive("queue.msg");
    
            //报文头中的消息编码
            String encoding = receive.getMessageProperties().getContentEncoding();
    
            System.out.println("收到的消息:" + new String(receive.getBody(), encoding));
    
    
            context.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    spring-rabbit.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:rabbit="http://www.springframework.org/schema/rabbit"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/rabbit
        http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
    
        <!--配制连接工厂-->
        <rabbit:connection-factory id="connectFactory"
                                   host="node1" virtual-host="/"
                                   username="root" password="123456"
                                   port="5672"
        ></rabbit:connection-factory>
    
    
        <!--用于自动向RabbitMQ声明队列、交换器、绑定 等操作工具类-->
        <rabbit:admin id="rabbitAdmin" connection-factory="connectFactory"></rabbit:admin>
    
    
        <!--用于简化操作的模板类-->
        <rabbit:template connection-factory="connectFactory" id="rabbitTemplate"/>
    
    
        <!--声明队列队列-->
        <rabbit:queue id="msg1" name="queue.msg" durable="false" exclusive="false" auto-delete="false"></rabbit:queue>
    
    
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    当启动消费者后,便可获取到发送至队列的消息

    收到的消息:hello world
    
    • 1

    检查队列的消息的情况:

    [root@nullnull-os ~]# rabbitmqctl list_queues  --formatter pretty_table
    Timeout: 60.0 seconds ...
    Listing queues for vhost / ...
    ┌───────────┬──────────┐
    │ name      │ messages │
    ├───────────┼──────────┤
    │ queue.msg │ 0        │
    └───────────┴──────────┘
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    经过检查确认,发现消息已经被消费了。

    至此拉模式的消费者完成。

  • 相关阅读:
    [附源码]Python计算机毕业设计Django网约车智能接单规划小程序
    Android基础第九天 | 字节跳动第四届青训营笔记
    【版本控制】Github和Gitlab同时使用ssh
    AI领域再出“王炸“----Claude3是否会成为下一个“神“
    yolov6训练记录
    Linux 加密安全和私有CA的搭建方法
    Revit中“梁标注”怎么操作?有插件能实现吗?
    CompletableFuture 实战
    认识伦敦银的真相,并没有那么容易
    使用PyTorch搭建VGG模型进行图像风格迁移实战(附源码和数据集)
  • 原文地址:https://blog.csdn.net/bug_null/article/details/132701206