Deug 2016-12-20 02:21 采纳率: 11.1%
浏览 1700
已结题

spring和rabbitmq整合,会概率性的出现取不到数据的情况

向队列里放入数据的语句:this.amqpTemplate.convertAndSend("queue_one_key", xml);

 从队列里取数据的类:@Service(value="MessFromMq")
public class MessFromMq implements MessageListener {@Override
    public void onMessage(Message arg0) {String message = "";//取出的报文
        try {
            message = new String(arg0.getBody(), "UTF-8");
        }catch (UnsupportedEncodingException e) {
            this.log.info(e.getMessage(), e);
            return;
        }}}

其中arg0是从队列里取出的数据
spring-mq的配置文件:

 <?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:context="http://www.springframework.org/schema/context"
    xmlns:rabbit="http://www.springframework.org/schema/rabbit" xmlns:p="http://www.springframework.org/schema/p"
    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-1.2.xsd">
    <!-- 连接服务配置  -->
    <rabbit:connection-factory id="connectionFactory" host="192.168.15.60" username="lyq" password="kiban410." port="5672"/>
    <!-- <rabbit:connection-factory id="connectionFactory" host="192.168.56.172" username="mq" password="mq" port="5672"/> -->
    <rabbit:admin connection-factory="connectionFactory"/>
    <!-- queue 队列声明-->
    <rabbit:queue id="xsdxx" durable="true" auto-delete="false" exclusive="false" name="xsdxx"/>
    <!-- exchange queue binging key 绑定 -->
    <rabbit:direct-exchange name="my-mq-exchange" durable="true" auto-delete="false" id="my-mq-exchange">
        <rabbit:bindings>
            <rabbit:binding queue="xsdxx" key="queue_one_key"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>
    <!-- spring amqp默认的是jackson 的一个插件,目的将生产者生产的数据转换为json存入消息队列,由于fastjson的速度快于jackson,这里替换为fastjson的一个实现 -->
    <bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.JsonMessageConverter"/>
    <!-- spring template声明-->
    <rabbit:template exchange="my-mq-exchange" id="amqpTemplate"  connection-factory="connectionFactory"  message-converter="jsonMessageConverter"/>
    <!-- queue litener  观察监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
    <rabbit:listener-container concurrency="1" connection-factory="connectionFactory" message-converter="jsonMessageConverter">
        <rabbit:listener queue-names="xsdxx" ref="MessFromMq" method="onMessage"/>
    </rabbit:listener-container>
</beans>
  • 写回答

3条回答 默认 最新

  • Deug 2016-12-20 02:19
    关注

    跪求大神解答一下~~是什么原因导致的

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建