activemq 和spring 整合

首先在pom文件加入依赖

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>

</dependency>

然后在xml文件配置

      <!-- 连接池  -->
    <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">  
        <property name="connectionFactory">  
            <bean class="org.apache.activemq.ActiveMQConnectionFactory">  
                <property name="brokerURL" value="tcp://localhost:61616" />  
            </bean>  
        </property>  
    </bean>  
      
    <!-- 连接工厂 -->
    <bean id="activeMQConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  
        <property name="brokerURL" value="tcp://localhost:61616" />  
    </bean>  
    
    <!-- 配置消息目标 -->
    <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">  
          <constructor-arg>
            <value>queue9</value><!--队列名称-->
        </constructor-arg>
    </bean>  
 
    <!-- 消息模板 -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
        <property name="connectionFactory" ref="activeMQConnectionFactory" />  
        <property name="messageConverter">  
            <bean class="org.springframework.jms.support.converter.SimpleMessageConverter" />
        </property>  
        
    </bean>  
    
    <bean id="consumerMessageListener"
        class="com.bb.ConsumerMessageListener" />
    <!-- 消息监听容器 -->
    <bean id="jmsContainer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="activeMQConnectionFactory" />
        <property name="destination" ref="queueDestination" />
        <property name="messageListener" ref="consumerMessageListener" />
        <property name="concurrency" value="4-8"></property><!--设置消费者数-->
    </bean>

    

发送信息

   ApplicationContext ac = new ClassPathXmlApplicationContext("activemq.xml");
JmsTemplate jmsTemplate = ac.getBean("jmsTemplate", JmsTemplate.class);
jmsTemplate.setSessionTransacted(true);//设置事务是否开启
jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);//设置应答模式
Destination destination = (Destination) ac.getBean("queueDestination");

//注意这行代码 ,如果想设置DeliveryMode,Priority,TimeToLive这三个属性 必须要设置true

               jmsTemplate.setExplicitQosEnabled(true);

for(int i=0;i<100;i++){

final int j = i;

jmsTemplate.send(destination,new MessageCreator() {
public Message createMessage(Session arg0) throws JMSException {
TextMessage textMessage = arg0.createTextMessage();
textMessage.setText("第一条消息"+j);
System.out.println("第一条消息"+j);
return textMessage;

}
});
}

  消费者:
public class ConsumerMessageListener implements MessageListener  {


public void onMessage(Message message) {
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
String result = "";
try {
result = textMessage.getText();
System.out.println("线程名称:"+Thread.currentThread().getName()+"结果:"+result);

// message.acknowledge();  

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
}
}

猜你喜欢

转载自blog.csdn.net/hyhanyu/article/details/79854757