正常な動作が定義されています。キューに送信されたメッセージはまだ保留されており、コンシューマが接続されていない場合は失われません。
UPDATE
だから私はあなたの問題はprefetchPolicyだと思います。
persistent queues (default value: 1000)
non-persistent queues (default value: 1000)
persistent topics (default value: 100)
non-persistent topics (default value: Short.MAX_VALUE - 1)
ので、私はすべてのメッセージが接続されている消費者に派遣されたことを考えると、もう一つは、接続したときに、彼はあなたがにprefetchPolicyを設定する必要がキューの同時消費者を持っている場合ので、この動作を変更するには、メッセージを受信しません。デフォルトより低い値。たとえば、jms.prefetchPolicy.queuePrefetch=1
をactivemq.xmlのuri configに追加するか、クライアントのURLに設定します。
メッセージボリュームが高い の高性能を得るには、大きなプリフェッチ値を推奨します。ただし、メッセージの量が少なくても、各メッセージの処理に時間がかかります。 これにより、コンシューマは一度に1つのメッセージしか処理できません。 ただし、0のプリフェッチ制限を指定すると、 がコンシューマにプッシュされるのではなく、コンシューマ が一度に1つずつメッセージをポーリングします。
http://activemq.apache.org/what-is-the-prefetch-limit-for.html
そして
http://activemq.apache.org/destination-options.html
を見て、私はあなたがおそらくブローカーが再起動した場合にメッセージが保存されているので、送信されたときにPERSISTENTにメッセージを設定することを追加します同じように。 –
確かにええ必要ならば –
あなたの提案に感謝しますが、私は誤解されたと思うので、私は質問を延長しました。 – MarcinB