/ / adapter-channel-adapter-channel: odpytywanie fałszywych / fantomowych komunikatów z kolejki - wiosna, integracja sprężyn, ibm-mq

channel-driven-channel-adapter: odpytywanie fałszywych / phantomowych wiadomości z kolejki - wiosna, wiosenna integracja, ibm-mq

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.

wprowadź opis obrazu tutaj

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 № 1

Wyglą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. wprowadź opis obrazu tutaj