首先在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();
}
}
}
}