• Spring整合RabbitMQ-配制文件方式-2-推模式消费者


    推模式的消费者

    在推模式中使用可以两种实现:

    1. 使用ChannelAwareMessageListener.

    除消息外,还提供了Channel这个对象,通过channel可以有更大的灵活性

    import com.rabbitmq.client.Channel;
    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
    
    public class MesListener implements ChannelAwareMessageListener {
    
        @Override
        public void onMessage(Message message, Channel channel) throws Exception {
            
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 使用MessageListener

    基本的消息的临时。普通的场景基本够用。

    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.core.MessageListener;
    
    public class MesListener implements MessageListener {
        @Override
        public void onMessage(Message message) {
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    此处以ChannelAwareMessageListener为样例:

    import com.rabbitmq.client.Channel;
    import org.springframework.amqp.core.Message;
    import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
    
    public class MesListener implements ChannelAwareMessageListener {
    
        @Override
        public void onMessage(Message message, Channel channel) throws Exception {
            String encoding = message.getMessageProperties().getContentEncoding();
            System.out.println("收到的消息是:" + new String(message.getBody(), encoding));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    spring-rabbit.xml

    
    <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>
    
    
        
        <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>
    
    
        
        <bean id="msgListener" class="com.nullnull.learn.MesListener"/>
    
        
        <rabbit:listener-container connection-factory="connectFactory">
            <rabbit:listener ref="msgListener" queues="msg1">rabbit:listener>
        rabbit:listener-container>
    
    
    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
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    容器启动类

    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class ListenerApplication {
        public static void main(String[] args) {
            //启动Spring容器
            new ClassPathXmlApplicationContext("spring-rabbit.xml");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    首先启动消费者。这样监听者就会处于监听状态。

    再启动生产者,向队列中发送消息。

    再观察消息者,便能看到消费者队列中已经收到了发送的消息。

    收到的消息是:hello world
    
    • 1

    在推模式中消息的即时性比拉模式会好。

  • 相关阅读:
    DQL命令查询数据(二)
    抖音开放平台探索价值共生新生态,促进高校招生就业提质增效
    果脯干货经营小程序商城的效果如何
    微前端qiankun
    LeetCode700. Search in a Binary Search Tree
    操作系统对设备的管理:I/O软件的结构层次
    C++初识--------带你从不同的角度理解引用的巧妙之处
    Shopee店铺没有流量?3步教你如何诊断店铺
    程序员的数学课15 递归:如何计算汉诺塔问题的移动步数?
    GitHub推送代码时弹出验证框总是登录失败
  • 原文地址:https://blog.csdn.net/bug_null/article/details/132701185