【发布时间】:2015-06-10 03:23:33
【问题描述】:
这是我第一次使用 Spring JMS(以及一般的 JMS),我对 JmsTemplate 回调的概念有一些疑问。
我知道 JmsTemplate 是 Spring 提供的一个类:
- 减少样板代码。
- 透明地管理资源。
- 将检查的异常转换为运行时等效项。
- 提供方便的方法和回调。
并且它用于消息生成和同步消息接收。它简化了 JMS 的使用,因为它在发送或同步接收消息时处理资源的创建和释放。
阅读Spring官方文档(这里:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html)我发现:
使用JmsTemplate的代码只需要实现回调 接口给他们一个明确定义的高级合同。这 MessageCreator 回调接口在给定 Session 的情况下创建消息 由 JmsTemplate 中的调用代码提供。
这对我来说不是很清楚。这些回调到底是什么?
一开始我认为回调是 JmsTemplate 提供的一种方法,但在这里阅读它似乎更类似于我必须实现的接口。它是如何工作的?
我也找到了这个例子:
通过 JMS 发送 POJO(使用 JmsTemplate):
public class JmsOrderManager implements OrderManager {
@Autowired JmsTemplate jmsTemplate;
@Autowired Destination orderQueue;
public void placeOrder(Order order) {
String stringMessage = "New order " + order.getNumber();
jmsTemplate.convertAndSend("messageQueue", stringMessage );
// use destination resolver and message converter
jmsTemplate.convertAndSend(orderQueue, order); // use message converter
jmsTemplate.convertAndSend(order); // use converter and default destination
}
}
我认为 convertAndSend() 方法是 JmsTemplate callback 但可能这个断言是不正确的。
你能解释一下 JmsTemplate 回调到底是什么吗?
【问题讨论】:
标签: java spring spring-mvc jms spring-jms