同时我们需要使用SpringFramework框架,当前版本为1.2.5。准备好所有的开发包,我们要在IntelliJ IDEA创建一个新的项目,包含一个普通的模块即可,然后设定一下classpath即可,关于项目的详细信息,请下载附件中IntelliJ IDEA项目文件。
MDP的机制很简单,就是完成对指定的Message Queue或Topic的监听,所以我们需要在Spring的配置文件进行设定:
1 设定ConnectionFactory,这里我们采用嵌入式方式运行ActiveMQ:
2 设定MDP,我们只需创建一个普通的JavaBean,然后实现MessageListener,最后在Spring配置文件中进行设定。
3 将MDP和Queue或Topic关联起来,以下是针对ActiveMQ的设定。其中HelloMDP是对MDP名称的引用。
4 设定JmsTemplate,方便JMS客户段操作。
接下来我们需要创建一个Spring的JUnit测试用例,测试我们设定的功能,这里我们只需设定Spring配置文件位置,然后在测试方法中引用JmsTemplate,发送Message进行测试。
public class SpringTest extends AbstractDependencyInjectionSpringContextTests
{
protected String[] getConfigLocations()
{
return new String[]{"classpath*:applicationContext.xml"};
}
public void testSendMessage() throws Exception
{
JmsTemplate jmsTemplate = (JmsTemplate) applicationContext.getBean("jmsTemplate");
jmsTemplate.send(new MessageCreator()
{
public Message createMessage(Session session) throws JMSException
{
MapMessage message=session.createMapMessage(); message.setString("name","Jacky");
return message;
}
});
}
}
当你运行这个测试时,你会发现测试的结果。 总结:通过以上的设定,我们就可以完成Spring下的Message Driven Bean的设定,同EJB的MDB相比,MDP更加简单。在上例中,我们以JVM方式启动ActiveMQ,这对于单个应用(如web应用)是非常实用的,通过这种方式可以异步发送消息,这对应用中异步发送email,特定任务等,这种方式非常简单,原来比较复杂的问题现在可以很快解决啦。