0
JMSリスナーが停止した後、この例外が表示され続けます。展開後、2日間のログファイルは約6.2GBでした。イベントのためにその間にリスナーコンテナが停止したために受信メッセージが拒否されました。
2017-08-01 12:14:36.436 WARN 4456 --- [er (4102308050)] o.s.j.l.SimpleMessageListenerContainer : Rejecting received message because of the listener container having been stopped in the meantime: ObjectMessage={ Header={ JMSMessageID={ID:EMSATIBDEV0.291559497D151:2A78089} JMSDestination={Queue[JP.PROGRAMGUIDE.DATALOAD.SUB.Q]} JMSReplyTo={null} JMSDeliveryMode={PERSISTENT} JMSRedelivered={true} JMSCorrelationID={null} JMSType={null} JMSTimestamp={Tue Aug 01 12:03:23 JST 2017} JMSDeliveryTime={Tue Aug 01 12:03:23 JST 2017} JMSExpiration={0} JMSPriority={4} } Properties={ JMSXDeliveryCount={Integer:3} } Object={com.compa[email protected]66820b} }
私はすべてのアイデアをいただければ幸いですApplicationListener
@EventListener
public void onApplicationEvent(ProgramGuideManagerEvent<String> event) {
log.trace("In ProgramGuideManagerEventListener");
synchronized (syncObject) {
if (event.isError()) {
errorCount++;
if (errorCount >= maxErrorCount) {
log.error("Maximum sequential errors [errorCount=" + errorCount+ "] occurred. Listener will be stopped.");
String listenerName = (String) event.getSource();
Map<String, JmsListenerEndpointRegistry> map = context.getBeansOfType(JmsListenerEndpointRegistry.class);
Set<String> set = map.keySet();
// JMS Listeners
for (String key : set) {
JmsListenerEndpointRegistry value = map.get(key);
if (value != null) {
Set<String> listeners = value.getListenerContainerIds();
for (String name : listeners) {
if (name.toUpperCase().equalsIgnoreCase(listenerName)) {
MessageListenerContainer jms = value.getListenerContainer(name);
jms.stop();
}
}
}
}
}
} else {
errorCount = 0;
}
}
}
を実装して、この機能を持って聞いて。
これはどのようにスプリングバッチに関連していますか? –
@IgorKonoplyanko申し訳ありません。春のバッチと一緒に長い間実行されていた。 –