最近公司准备用Activemq进行消息的通知,并且是request-reply模式的,遇到一个问题:在生产者向队列发送消息的时候,如果队列满了,则需要向生产者发送一个消息通知,从而尽快给用户一个答复,免得耽误时间,由于本人从未接触过Activemq,只能一边学习,一边实践了。今天终于做出来了,将重要代码贴在此地,以免忘记。
applicationContext.xml的内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:annotation-config />
<context:component-scan base-package="****.******.***" />
<bean id="prefetchPolicy" class="org.apache.activemq.ActiveMQPrefetchPolicy">
<property name="queuePrefetch" value="1" />
</bean>
<!-- get ConnectionFctory from URI:tcp://localhost:61616 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<constructor-arg value="tcp://localhost:61616" />
<property name="alwaysSyncSend" value="true" />
<property name="producerWindowSize" value="0" />
<property name="prefetchPolicy" ref="prefetchPolicy" />
</bean>
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory" ref="connectionFactory" />
<property name="maxConnections" value="10" />
<property name="maximumActiveSessionPerConnection" value="10" />
<property name="expiryTimeout" value="10" />
<property name="idleTimeout" value="0" />
<!-- <property name="timeBetweenExpirationCheckMillis" value="50" /> -->
</bean>
<bean id="classPathResource" class="org.springframework.core.io.ClassPathResource">
<constructor-arg value="activemq.xml" />
</bean>
<bean id="brokerFactory" class="org.apache