并发请求rabbitmq之后增加的channel显示no customers

malie0 发布于 2017/05/16 13:53
阅读 312
收藏 0

spring和rabbitmq结合,rabbitmq有个channel的缓存,默认好像是25,生产者和消费者都配好后默认会创建一个channel,在并发以后又会自动增加channel,但是这些增加的channel都显示no customers,能被消费者使用的还是只有最开始创建的那个,我怀疑是消费者没有和channel绑定所以增加的channel都是空闲的,不知道有什么办法可以让这些channel能被消费者使用?

spring的rabbitmq配置:

<!-- spring amqp默认的是jackson 的一个插件,目的将生产者生产的数据转换为json存入消息队列 -->  
    <bean id="jsonMessageConverter"  class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"/>  
   
    <!-- 创建connectionFactory -->     
    <!-- org.springframework.amqp.rabbit.connection.CachingConnectionFactory -->
    <!-- <task:executor id="mqExecutor" pool-size="3-5" keep-alive="600" queue-capacity="2000" rejection-policy="CALLER_RUNS" /> -->
    <rabbit:connection-factory id="connectionFactory"
        addresses="${rabbit.addresses}"
        username="${rabbit.username}"
        password="${rabbit.password}"
        />
        
    <!-- org.springframework.amqp.rabbit.core.RabbitAdmin -->
    <rabbit:admin connection-factory="connectionFactory" />
    
    <!-- queue 队列声明-->      
    <!--
        queue_loanInfomation    进件
        queue_payCollect        代扣
     -->
    <rabbit:queue id="queue_loanInfomation" name="queue_loanInfomation" durable="true" auto-delete="false" exclusive="false" />
    <!-- <rabbit:queue id="queue_payCollect" name="queue_payCollect" durable="true" auto-delete="false" exclusive="false" /> -->
    
    <!-- exchange queue binging key 绑定 -->
    <!-- 将Queue、Exchange设置为Durable即不会发生数据丢失问题 -->
    <rabbit:direct-exchange id="rd-mq-exchange" name="rd-mq-exchange" durable="true" auto-delete="false" >
        <rabbit:bindings>
            <rabbit:binding queue="queue_loanInfomation" key="queue_loanInfomation_key" />
            <!-- <rabbit:binding queue="queue_payCollect" key="queue_payCollect_key" /> -->
        </rabbit:bindings>
    </rabbit:direct-exchange>
    
    
    <!-- 生产者配置:spring template声明 -->
    <!-- org.springframework.amqp.rabbit.core.RabbitTemplate -->
    <rabbit:template id="rabbitTemplate" exchange="rd-mq-exchange"
        connection-factory="connectionFactory" message-converter="jsonMessageConverter" />
                
    <!-- 消费者监听:queue listener 观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象 -->
    <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" requeue-rejected="false"
        message-converter="jsonMessageConverter">
        <rabbit:listener ref="loanInfomationListener" method="listen" queues="queue_loanInfomation" />
        <!-- <rabbit:listener ref="payCollectListener" method="listen" queues="queue_payCollect" /> -->
    </rabbit:listener-container>

加载中
0
开源中国总架构师
开源中国总架构师

Channel是不是没和exchange,queue绑定在一块?

Channel.exchangeBind,Channel.queueBind

如果没定义先定义exchangeDeclare,queueDeclare

m
malie0
这个要怎么绑?我知道channel有这些属性,但是不知道spring里怎么配置?spring里只和exchange只和queue绑定了。给你贴一下我的配置文件帮忙看一下
返回顶部
顶部