rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » JavaEE

主题:ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息 续

5. MessageProducer

   实例拥有两个消息生产者, 消息生产者都是POJO, 实现见附件.

Xml代码
  • <!-- POJO which send Message uses   Spring JmsTemplate -->  
  •     <bean id="topicMessageProducer" class="com.andyao.activemq.TopicMessageProducer">  
  •         <property name="template" ref="jmsTemplate" />  
  •         <property name="destination" ref="TOPIC" />  
  •     </bean>  
  •     <bean id="queueMessageProducer" class="com.andyao.activemq.QueuMessageProducer">  
  •         <property name="template" ref="jmsTemplate" />  
  •         <property name="destination" ref="QUEUE" />  
  •     </bean>  
  • 
    <!-- POJO which send Message uses  Spring JmsTemplate -->
    <bean id="topicMessageProducer" class="com.andyao.activemq.TopicMessageProducer">
    <property name="template" ref="jmsTemplate" />
    <property name="destination" ref="TOPIC" />
    </bean>
    <bean id="queueMessageProducer" class="com.andyao.activemq.QueuMessageProducer">
    <property name="template" ref="jmsTemplate" />
    <property name="destination" ref="QUEUE" />
    </bean>
    6. MessageConsumer
    

    TOPIC通道有两个消息消费者, QUEUE有一个消息消费者

    Xml代码
  • <!--   Message Driven POJO (MDP) -->  
  •     <!-- consumer1 for topic a -->  
  •     <bean id="topicConsumerA" class="com.andyao.activemq.TopicConsumerA" />  
  •     <!-- consumer2 for topic a -->  
  •     <bean id="topicConsumerB" class="com.andyao.activemq.TopicConsumerB" />  
  •     <!-- consumer for queue -->  
  •     <bean id="queueConsumer" class="com.andyao.activemq.QueueConsumer" />  
  • 
    <!--  Message Driven POJO (MDP) -->
    <!-- consumer1 for topic a -->
    <bean id="topicConsumerA" class="com.andyao.activemq.TopicConsumerA" />
    <!-- consumer2 for topic a -->
    <bean id="topicConsumerB" class="com.andyao.activemq.TopicConsumerB" />
    <!-- consumer for queue -->
    <bean id="queueConsumer" class="com.andyao.activemq.QueueConsumer" />
    7. MessageListener
    

    每一个消息消费者都对应一个MessageListener

    Xml代码
  • <bean id="topicListenerA" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">  
  •         <constructor-arg ref="topicConsumerA" />  
  •         <!--   may be other method -->  
  •         <property name="defaultListenerMethod" value="receive" />  
  •         <!-- custom MessageConverter define -->  
  •         <property name="messageConverter" ref="defaultMessageConverter" />  
  •     </bean>  
  •   
  •     <bean id="topicListenerB" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">  
  •         <constructor-arg ref="topicConsumerB" />  
  •         <!--   may be other method -->  
  •         <property name="defaultListenerMethod" value="receive" />  
  •         <!-- custom MessageConverter define -->  
  •         <property name="messageConverter" ref="defaultMessageConverter" />  
  •     </bean>  
  •   
  •     <bean id="queueListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">  
  •         <constructor-arg ref="queueConsumer" />  
  •         <!--   may be other method -->  
  •         <property name="defaultListenerMethod" value="receive" />  
  •         <!-- custom MessageConverter define -->  
  •         <property name="messageConverter" ref="defaultMessageConverter" />  
  •     </bean>  
  • 
    <bean id="topicListenerA" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
    <constructor-arg ref="topicConsumerA" />
    <!--  may be other method -->
    <property name="defaultListenerMethod" value="receive" />
    <!-- custom MessageConverter define -->
    <property name="messageConverter" ref="defaultMessageConverter" />
    </bean>
    <bean id="topicListenerB" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
    <constructor-arg ref="topicConsumerB" />
    <!--  may be other method -->
    <property name="defaultListenerMethod" value="receive" />
    <!-- custom MessageConverter define -->
    <property name="messageConverter" ref="defaultMessageConverter" />
    </bean>
    <bean id="queueListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
    <constructor-arg ref="queueConsumer" />
    <!--  may be other method -->
    <property name="defaultListenerMethod" value="receive" />
    <!-- custom MessageConverter define -->
    <property name="messageConverter" ref="defaultMessageConverter" />
    </bean>
    8. MessageListenerContainer
    

    有几个MessageListener既有几个MessageListenerContainer

    Xml代码
  • <bean id="topicListenerContainerA" class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  •         <property name="connectionFactory" ref="jmsConnectionFactory" />  
  •         <property name="destination" ref="TOPIC" />  
  •         <property name="messageListener" ref="topicListenerA" />  
  •     </bean>  
  •   
  •     <bean id="topicListenerContainerB" class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  •         <property name="connectionFactory" ref="jmsConnectionFactory" />  
  •         <property name="destination" ref="TOPIC" />  
  •         <property name="messageListener" ref="topicListenerB" />  
  •     </bean>  
  •        
  •     <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">  
  •         <property name="connectionFactory" ref="jmsConnectionFactory" />  
  •         <property name="destination" ref="QUEUE" />  
  •         <property name="messageListener" ref="queueListener" />  
  •     </bean>  
  • 
    <bean id="topicListenerContainerA" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    <property name="destination" ref="TOPIC" />
    <property name="messageListener" ref="topicListenerA" />
    </bean>
    <bean id="topicListenerContainerB" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    <property name="destination" ref="TOPIC" />
    <property name="messageListener" ref="topicListenerB" />
    </bean>
    <bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory" />
    <property name="destination" ref="QUEUE" />
    <property name="messageListener" ref="queueListener" />
    </bean>
    Summary
    

    写spring配置文件的时候, 要把MessageProducer, MessageConsumer,MessageListener,MessageListenerContainer几个地方弄清楚:

  • 可以有一个或者多个消息生产者向同一个destination发送消息.
  • queue类型的只能有一个消息消费者.
  • topic类型的可以有多个消息消费者.
  • 每个消费者对应一个MessageListener和一个MessageListenerContainer.  
  • 顶一下
    (0)
    踩一下
    (0)