Korzystamy z integracji wiosennej i codziennie w naszych logach widzimy poniżej stacktrace. Inne adaptery JMS działają dobrze, uważamy, że brakuje tylko jednego z nich:
Konfiguracja integracji wiosennej:
<jms:message-driven-channel-adapter concurrent-consumers="1" id="jmsInLOAN" destination="queueLOAN" channel="LOANCommonDataChannel" acknowledge="transacted" />
Poniżej znajdują się statystyki MQ Put i Msgsliczba odczytów, powinna być dokładna liczba wiadomości odczytanych przez adapter. Martwię się o adapter kanału oparty na komunikatach integracji wiosennej, który odczytuje dodatkowe wiadomości z kolejki. Każda pomoc byłaby mile widziana.
WARN 07/Jan/2016 09:04:15,438 [org.springframework.jms.listener.DefaultMessageListenerContainer#23-1] springframework.jms.listener.DefaultMessageListenerContainer - [SYSTEM_ID=HBUSLOANIQ] [MESSAGE_ID=null] Execution of JMS message listener failed, and no ErrorHandler has been set.
org.springframework.integration.MessagingException: unsupported payload type [com.ibm.jms.JMSMessage]
at org.springframework.integration.xml.DefaultXmlPayloadConverter.convertToDocument(DefaultXmlPayloadConverter.java:76)
at org.springframework.integration.xml.DefaultXmlPayloadConverter.convertToNode(DefaultXmlPayloadConverter.java:88)
at org.springframework.integration.xml.router.XPathRouter.getChannelIdentifiers(XPathRouter.java:119)
at org.springframework.integration.router.AbstractMessageRouter.determineTargetChannels(AbstractMessageRouter.java:247)
at org.springframework.integration.router.AbstractMessageRouter.handleMessageInternal(AbstractMessageRouter.java:211)
Odpowiedzi:
0 dla odpowiedzi № 1Wygląda na to, że przekazujesz nieprzetworzony komunikat JMS (com.ibm.jms.JMSMessage
) do konwertera XML Payload ...
org.springframework.integration.MessagingException: unsupported payload type [com.ibm.jms.JMSMessage]
at org.springframework.integration.xml.DefaultXmlPayloadConverter.convertToDocument(DefaultXmlPayloadConverter.java:76)
Być może ustawiłeś extract-payload
do false
?
Chociaż nie ma go w pokazanej konfiguracji.
Włączenie rejestrowania DEBUG spowoduje wyświetlenie typu ładunku wiadomości przesyłanych przez system.
0 dla odpowiedzi nr 2
Problem był spowodowany ważnym itrujące (które mają typ ładunku [com.ibm.jms.JMSMessage]) wiadomości, które dostawaliśmy do kolejki. Prawidłowe wiadomości przetworzone dobrze, ale szkodliwe wiadomości nie są w stanie przetworzyć przez aplikację i wysłać do BackoutQueue.
W naszym przypadku próg BOQ wynosi 3, co oznacza 3razy moja aplikacja będzie próbowała zużyć komunikat peryferyjny, a jeśli komunikat zostanie wycofany 3 razy, zostanie przeniesiony do kolejki BOQ i (msgs odczytane - msgs wprowadzone) / 3 na LOAIQ == msgsy umieszczone w kolejce BOQ w tym przedziale próbkowania . Na podstawie wiadomości umieszczonych w kolejce BOQ możemy zobaczyć, ile wiadomości jest wycofywanych z kolejki LOAIQ. Dlatego liczba odczytanych wiadomości jest większa niż otrzymana msg.