我有:
- hornetq-2.2.14-final 独立服务器
- 将消息发送到队列 A 的客户端应用程序 C1
- 使用来自队列 A 的消息的客户端应用程序 C2
C1 使用 jmstemplate 在 CLIENT_ACKNOWLEDGE 模式下发送消息:
<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE" />
<property name="sessionTransacted" value="true" />
</bean>
所以 C2 应该手动确认消息:
@Override
@Transactional
public void onMessage(Message message)
{
try
{
messageHandlerService.handleReceivedMessage(message);
message.acknowledge();
}
catch (DeserializeXmlException e)
{
// TODO log
e.printStackTrace();
}
catch (InvalidMessageException e)
{
//TODO log
e.printStackTrace();
}
catch (JMSException e)
{
//TODO log
e.printStackTrace();
}
}
我的问题:
- 当客户端 C2 收到该消息但在确认之前崩溃时,该消息会发生什么?
- 有没有超时机制?如果是,确认的默认超时是多少?我该如何修改它?