java jmstemplate_什么是Spring JMS中的JmsTemplate回调?

Spring模板类常见的设计原则是提供 helper methods to perform common operations 以及更复杂的用法, delegate the essence of the processing task to user implemented callback interfaces.

在JMS Connection中将从工厂获得

=>从创建的连接会话中,视图是一个工作单元,它还提供事务

=>从会话中创建不同类型的JMS消息,如TextMessage,ObjectMessage,MapMessage,BytesMessage和StreamMessage,方法如下:session.createTextMessage(“hello queue world”); session.createObjectMessage(someSerializedObject)等

=>同一会话还负责创建MessageProducer session.createProducer(destination)和MessageConsumer session.createConsumer(destination)的实例

您有以下convertAndSend可能性(重载方法):

jmsTemplate.convertAndSend(message)

jmsTemplate.convertAndSend(destination, message)

jmsTemplate.convertAndSend(message, postProcessor)

jmsTemplate.convertAndSend(destinationName, message)

jmsTemplate.convertAndSend(destination, message, postProcessor)

jmsTemplate.convertAndSend(destinationName, message, postProcessor)

What is happening? 回调的基本用法,如第3和第5签名,您可以在通过已配置的MessageConverter将对象转换为JMS消息后更改消息 . 你看到一个实际的目的地要由DestinationResolver在6日的情况下解决,你没有传递它,它将从JNDI解析,如果它在那里注册 .

What does it mean?

jmsTemplate.send(this.queue, new MessageCreator() {

public Message createMessage(Session session) throws JMSException {

return session.createTextMessage("hello queue world");

}

});

在这个示例中,您将看到JMS模板的send()方法,您正在提供匿名实现(回调),其中该方法允许您访问会话对象,并从该会话创建自定义的session.createTextMessage(“hello queue world”)信息 .

convertAndSend中的相同方式(您可以访问要修改的后处理器)

public void ConvertSend() {

Map map = new HashMap();

map.put("Name", "Vimal");

map.put("Age", new Integer(45));

jmsTemplate.convertAndSend("jmsQueue", map, new MessagePostProcessor() {

public Message postProcessMessage(Message message) throws JMSException {

message.setIntProperty("ID", 9999);

message.setJMSCorrelationID("123-99999");

return message;

}

});

}

消息对象已创建但您正在修改它(除了名称和年龄之外还添加了两个属性) . MessagePostProcessor接口允许您在转换消息之后但在发送之前访问消息 .

In other words! 消息属性, Headers 和正文的设置无法封装在转换器类(SimpleMessageConverter)中,但MessagePostProcessor接口允许您在转换后但在发送之前访问消息 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值