美文网首页
8.3 RabbitMQ消息消费

8.3 RabbitMQ消息消费

作者: 孔垂云 | 来源:发表于2017-12-03 21:37 被阅读0次

一般消费消息的应用会单独部署,不会和发布消息的应用部署到一起,所以本节也单独讲一下。

1.maven依赖、application.properties配置和上一节一样

2.applicationContext-rabbitmq.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"
      xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd 
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/rabbit
   http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">

   <description>rabbitmq 连接服务配置</description>
   <context:property-placeholder ignore-unresolvable="true" location="classpath:/application.properties"/>
   <rabbit:connection-factory id="rabbitConnectionFactory" host="${rabbit.host}" port="${rabbit.port}"
                              username="${rabbit.username}" password="${rabbit.password}"
                              virtual-host="${rabbit.vhost}" channel-cache-size="50"/>
   <!-- 消费者 -->
   <bean name="rabbitmqService" class="com.critc.service.RabbitmqService"></bean>
   <rabbit:queue id="test_mq" name="test_mq" durable="true" auto-delete="false" exclusive="false" />
   <!-- 配置监听 -->
   <rabbit:listener-container connection-factory="rabbitConnectionFactory" acknowledge="auto" >
       <rabbit:listener queues="test_mq" ref="rabbitmqService" />
   </rabbit:listener-container>
</beans>

这里面定义了一个消费者和一个监听器来处理消息

3.RabbitmqService 消费类

@Service
public class RabbitmqService implements MessageListener {
    public void onMessage(Message message) {
        try {
            String msg = new String(message.getBody(), "utf-8");
            System.out.println("消息消费者 = " + msg);
        } catch (Exception e) {
        }
    }
}

这里面需要强调一点,传到这里面的Message是一个对象,包含消息头、消息体等各种信息,需要进行一下转码,取到消息body,然后进行处理。

4.web.xml 启动加载配置

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID"
         version="3.1">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:applicationContext-rabbitmq.xml
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>

启动时加载配置,启动监听。

5.启动执行

rabbitmq监听.png

控制台会输出消息body,后续可以处理这些消息

源码下载

本工程详细源码

相关文章

  • 8.3 RabbitMQ消息消费

    一般消费消息的应用会单独部署,不会和发布消息的应用部署到一起,所以本节也单独讲一下。 1.maven依赖、appl...

  • RabbitMQ

    RabbitMQ消息的消费模式了解吗?你们是如何使用的? RabbitMQ消息的消费模式包含Push模式和Pull...

  • RabbitMQ消息确认及消息持久化

    RabbitMQ消息确认(消费者端消息确认) 当我们设置autoAck参数为true时,RabbitMQ一旦向消费...

  • RabbitMQ实现延迟消费

    RabbitMQ实现延迟消费 rabbitMQ没有能直接设置消息延迟消费的功能; 但是可以用消息超时,加入死信队列...

  • rabbitmq消息确认

    rabbitmq消息确认 消息确认 当生产者投递消息到broker,rabbitmq把消息分发到消费者。 如果设置...

  • RabbitMQ笔记二十四:RabbitMQ异常处理

    异常处理 RabbitMQ java client中的异常处理 消费消息,在消费消息的时候抛出异常, 消费启动类:...

  • 【RabbitMQ-8】消息确定机制(自动ACK和手动ACK)

    1. 消息确定机制及其配置 RabbitMq消费者的消息确定机制: NONE:无应答,rabbitmq默认cons...

  • RabbitMQ如何保证消息不丢失?

    按照RabbitMQ正常使用流程,生产者会发送一条消息到RabbitMQ服务器,消费者接收到消息进行消费。但是在实...

  • RabbitMQ-消费消息-basicConsume

    RabbitMQ-消费消息 basicConsume方法 queue 队列名 autoAck 是否自动确认消息,t...

  • 消息的确认与拒绝

    确认消息     为了保证消息从队列可靠的到达消费者, RabbitMQ 提供了消息确认机制,消费者在订阅队列时,...

网友评论

      本文标题:8.3 RabbitMQ消息消费

      本文链接:https://www.haomeiwen.com/subject/uymzbxtx.html