任何一个牛逼的框架都能和spring完美的集成.现在各个公司的项目基本没有不用spring框架的. 这里还是有必要把jms的流程图再回顾一下
- 创建一个基于maven管理的web项目
- 在项目中引入spring4 和 activemq 的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.11.0</version>
</dependency>
- 关于spring和spring-mvc的配置这里不做过多解释
- 配置连接工厂
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:(tcp://localhost:61616)" />
</bean>
- 配置生产者
<!-- 定义消息队列(Queue) -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- 设置消息队列的名字 -->
<constructor-arg>
<value>queue-tm-jms-demo</value>
</constructor-arg>
</bean>
<!-- 配置JMS模板(Queue),Spring提供的JMS工具类,它发送、接收消息。 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="queueDestination" />
<property name="receiveTimeout" value="10000" />
</bean>
<!--queue消息生产者 -->
<bean id="producerService" class="cn.majingjing.tm.demo.jms.queue.ProducerServiceImpl">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
- 编写生产者代码
/**
* 向指定队列发送消息
*/
public void sendMessage(Destination destination, final String msg) {
System.out.println("ProducerService向队列" + destination.toString()
+ "发送了消息:\t" + msg);
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(msg);
}
});
}
- 编写控制器调用程序
@Controller
public class JmsController {
@Autowired
private ProducerService producerService;
@RequestMapping("/queue/{msg}")
@ResponseBody
public Object queue(@PathVariable("msg") String msg, Model model) {
producerService.sendMessage(msg);
return "ok";
}
}
- 启动项目,在浏览器中执行 http://localhost:8060/queue/世界你好
- 在浏览器中访问 http://localhost:8161 看 Queues 模块下已经有对应的 Destination 名称为 queue-tm-jms-demo
- 生产者的集成已经完成