active mq 消費

首先配置MQ connection 

<bean id="amqConnectionFactory"
    class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL"
        value="failover://@{amq.address}?randomize=false&amp;jms.useAsyncSend=true&amp;jms.prefetchPolicy.queuePrefetch=1" />
</bean>
<bean id="pollConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" >
    <property name="connectionFactory" ref="amqConnectionFactory" />
    <property name="maxConnections"  value="@{maxConnections}"/>
</bean>

配置隊列

<bean id="priceInfoQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg index="0" value="@{price.amq.queue.name}" />
</bean>

配置listener

<bean id="priceListener" class="com.mq.listener.ProductPriceListener" />
<bean id="priceConsume"
      class="com.mq.consume.PriceMQConsume">
    <property name="connectionFactory" ref="amqConnectionFactory" />
    <property name="destination" ref="priceInfoQueue" />
    <property name="messageListener" ref="priceListener"  />
    <property name="receiveTimeout" value="10000" />
    <property name="sessionTransacted" value="true" />
    <property name="sessionAcknowledgeMode" value="0" />
</bean>

監聽類 實現messageListener

public class 
ProductPriceListener
implements MessageListener { private static final Logger logger = LoggerFactory.getLogger(
ProductPriceListener
.class); @Override public void onMessage(Message message) { if (!(message instanceof TextMessage)) { logger.warn("Only TextMessage will be processed."); return; } try {//消費代碼 } catch (Exception e){ //異常 } }}

消費容器可以使用

org.springframework.jms.listener.DefaultMessageListenerContainer


public class PriceMQConsume extends DefaultMessageListenerContainer {
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章