使用SpringJMS中的MessageConverter确认JmsMessage

使用SpringJMS中的MessageConverter确认JmsMessage,jms,spring-jms,Jms,Spring Jms,我正在SpringJMS中使用jmsTemplate.receiveAndConvert()方法。此方法返回已转换的对象(Person),但如果使用了Client Acknowledge,那么在这种情况下如何确认消息 任何指点都将不胜感激 谢谢您不能,因为您无权访问消息 使用receive();然后自己调用messageConverter.fromMessage(message)(例如在SimpleMessageConverter上)进行转换 编辑 但是,您确实不应该这样做,因为会话要么在rec

我正在SpringJMS中使用jmsTemplate.receiveAndConvert()方法。此方法返回已转换的对象(Person),但如果使用了Client Acknowledge,那么在这种情况下如何确认消息

任何指点都将不胜感激


谢谢

您不能,因为您无权访问
消息

使用
receive()
;然后自己调用
messageConverter.fromMessage(message)
(例如在
SimpleMessageConverter上)进行转换

编辑

但是,您确实不应该这样做,因为会话要么在
receive()
返回时关闭(要么返回到缓存,在这种情况下,其他用户可能会确认您的消息)


最好使用
jmsTemplate.execute()
SessionCallback
并在确认消息后退出回调。

感谢您的回答。我们可以在自定义对象中传递Jms消息引用并在以后确认它吗?感谢编辑@Gary。这真的很有帮助。实际上,我的要求是接收多达50条消息,并根据业务逻辑逐一确认它们。jmsTemplate.execute()在这种情况下可以工作吗?您可以在
SessionCallback.doInJms()方法的范围内做任何您想做的事情。嘿,我知道发表评论有点晚了,有一件事需要澄清。如何确认客户端。使用SpringJMS是否意味着在同一个会话中,如果我使用5条消息,并且一条消息使用ack,那么所有4条消息也将是ack,或者我们可以选择确认单个消息。如果您能提供任何示例或文档参考来解释spring jmsIt的JMS规范部分,而不是spring特有的,那就太好了-google
JMS规范
,并查看第4.4.13节(2.0规范)<代码>客户端确认-使用此选项,客户端通过调用消息的确认方法来确认消息。确认已消费的邮件将自动确认其会话已发送的所有邮件的接收。