我正在使用JMS和ActiveMQ。我在一台服务器上运行ActiveMQ代理,它创建一个队列和一个消息使用者,用于接收来自其他服务器的消息。如果另一台服务器尝试向队列发送消息并且由于某种原因(例如服务器之间的网络出现故障)失败,那么我不希望该服务器重试发送消息。只需发送一次,如果失败则不重试。这可能与ActiveMQ / JMS一起使用吗? javax.jms.Session类有3种确认模式(AUTO_ACKNOWLEDGE,CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE),所有这些模式都表明JMS消息生产者将在失败时重试。
答案 0 :(得分:1)
如果您的客户端未使用故障转移传输,则尝试发送时连接失败意味着客户端将不会尝试重新连接,因此在连接恢复后不会尝试重新发送消息。
如果使用故障转移传输且客户端遇到网络故障,则发送传输时将尝试重新连接,客户端将阻止发送,直到重新建立连接并且消息将再次发送给代理。