具体情况是这样的.
使用JBOSS AS 7.JMS,使用PTP的Queue.
正常情况下,队列的消息都是按序发送,读取的.
现在JBOSS的JMS里有10条消息,从1~~10. 1为第一条数据.
但是在读取JBOSS的第一条数据"1"的时候,读取失败,这个时候JMS的"1"这条数据还在不在?
仍然是上面的情况,但在读取失败后,这个JBOSS服务器关闭了.那么JBOSS重启后,这个JMS的消息"1"还存在不存在?
如果我描述不清晰的话请大家提醒下...汗.先谢谢大家.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在JBoss AS 7中使用JMS(Java消息服务)时,队列的消息通常遵循持久性或非持久性的规则。根据您的描述,这里有几个关键点需要考虑:
读取失败的情况:如果在尝试消费消息(即“1”)时发生了错误,并且没有正确地完成该消息的处理(比如通过调用Message.acknowledge()方法),那么这条消息的处理状态会取决于你的消息配置是持久还是非持久。
持久消息:如果消息被设置为持久的,那么即使消费时出错,消息也不会丢失。它会被放回队列中,等待下一次尝试消费。这意味着在解决了导致读取失败的问题后,消息“1”仍然会在队列中。
非持久消息:如果是非持久消息,在某些情况下,一旦发送到消费者但未被确认就可能丢失,尤其是在服务器故障或客户端异常的情况下。
JBoss服务器关闭后的场景:
综上所述,消息“1”是否还在,主要取决于消息的持久性设置以及消费时的具体错误处理方式。如果你希望确保消息不会因为消费失败而丢失,应该使用持久消息,并确保有恰当的错误处理逻辑来管理消息的重试和确认过程。