私は持っている:
- hornetq-2.2.14-final スタンドアロン サーバー
- キュー A にメッセージを送信するクライアント アプリケーション C1
- キュー A からメッセージを消費するクライアント アプリケーション C2
C1 は CLIENT_ACKNOWLEDGE モードでメッセージを送信するために jmstemplate を使用します。
<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 がそのメッセージを受信したが、確認する前にクラッシュした場合、メッセージはどうなりますか?
- タイムアウトメカニズムはありますか? はいの場合、確認応答のデフォルトのタイムアウトは? どうすれば変更できますか?