1. 程式人生 > >spring rabbitmq 整合配置

spring rabbitmq 整合配置

以上是我的applicationContext-mq.xml 配置(對一些名稱有一些手動的修改  因為有些不該出現的東東.so 希望親人們在參考的時候注意下名稱關聯關係是否統一)

<rabbit:connection-factory id="connectionFactory"  host="${mq.host}" username="${mq.user_name}"  password="${mq.pwd}" port="${mq.port}" />

<rabbit:admin connection-factory="connectionFactory"/>

<!-- queue 佇列宣告  name屬性就是 queen 的 name -->
<!--    <rabbit:queue id="queue_one" durable="true" auto-delete="false" exclusive="false" name="queue_one_name" /> -->
   
   <rabbit:queue id="act_result_pc_queue" durable="true" auto-delete="false" exclusive="false" name="act_result_pc_queue" />
   <rabbit:queue id="act_result_mobile_queue" durable="true" auto-delete="false" exclusive="false" name="act_result_mobile_queue" />
   
   <rabbit:queue id="act_regist_queue" durable="true" auto-delete="false" exclusive="false" name="act_regist_queue" />
   <rabbit:queue id="act_login_queue" durable="true" auto-delete="false" exclusive="false" name="act_login_queue" />
   <rabbit:queue id="act_investment_queue" durable="true" auto-delete="false" exclusive="false" name="act_investment_queue" />
    
   <!-- 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="queue_one" key="queue_one_key" /> -->
<!--         </rabbit:bindings> -->
<!--     </rabbit:direct-exchange> -->
    
    <rabbit:topic-exchange name="act_send_result_exchange" durable="true" auto-delete="false" id="act_send_result_exchange" >
        <rabbit:bindings>
            <rabbit:binding queue="act_result_pc_queue" pattern="act_result_pc.*" />
            <rabbit:binding queue="act_result_mobile_queue" pattern="act_result_mobile.*.*" />
        </rabbit:bindings>
    </rabbit:topic-exchange>
    
    
    <!-- rabbit:topic-exchange  topic rabbit:direct-exchange queue-->
    <rabbit:topic-exchange name="act_get_reward_exchange"  durable="true" auto-delete="false" id="act_get_reward_exchange" >
<rabbit:bindings>
<rabbit:binding queue="act_regist_queue" pattern="act.regist.*.*" />
<rabbit:binding queue="act_login_queue" pattern="act.login.*.*" />
<rabbit:binding queue="act_investment_queue" pattern="act.investment.*.*" />
</rabbit:bindings>
</rabbit:topic-exchange>
     
    <!-- spring amqp預設的是jackson 的一個外掛,目的將生產者生產的資料轉換為json存入訊息佇列,由於fastjson的速度快於jackson,這裡替換為fastjson的一個實現 -->

     
<bean id="jsonMessageConverter" name="jsonMessageConverter" class="com.eloan.act.mq.converter.JsonMessageConverter"/>
<bean id="registMessageListener" name="registMessageListener" class="com.*.act.mq.listener.RegistMessageListener"/>
<bean id="loginMessageListener" name="loginMessageListener" class="com.*.act.mq.listener.LoginMessageListener"/>
<bean id="investmentMessageListener" name="investmentMessageListener" class="com.*.act.mq.listener.InvestmentMessageListener"/>
    <!-- spring template宣告  -->
    <rabbit:template exchange="act_send_result_exchange" id="amqpTemplate"  connection-factory="connectionFactory"  message-converter="jsonMessageConverter" />





 <!-- queue litener  觀察 監聽模式 當有訊息到達時會通知監聽在對應的佇列上的監聽物件  task-executor="taskExecutor"  -->
    <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" >
<!--         <rabbit:listener queues="queue_one" ref="mqMessageListener"/> -->
<rabbit:listener queues="act_r_queue" ref="registMessageListener"/>
<rabbit:listener queues="act_l_queue" ref="loginMessageListener"/>
<rabbit:listener queues="act_i_queue" ref="investmentMessageListener"/>
    </rabbit:listener-container>