/ / spring integration avec jms, weblogic, le message apparaît dans la file d'attente même après la consommation du message dans le canal - jms, spring-integration, weblogic12c

printemps d'intégration avec jms, weblogic, le message apparaît dans la file d'attente même après la consommation du message dans le canal - jms, spring-integration, weblogic12c

J'utilise l'intégration printanière avec weblogic jms. Ma logique est de mettre l'objet JSON dans la file d'attente JMS et de le consommer de la file d'attente dans le canal, de le valider et de l'acheminer en fonction d'un champ particulier. en cas d'erreur, corrigez-le et remettez-le dans la file d'attente. J'ai deux problèmes. 1. Lorsque le message est consommé dans l'objet, je peux toujours voir l'objet en attente dans la console d'administration de weblogic. 2. Après avoir corrigé la validation, si l'objet modifié est mis dans la file d'attente, l'objet initial est extrait de la file d'attente.

<int-jms:outbound-channel-adapter id="jmsOutbound"
channel="requestChannel"  connection-factory="queueConnectionFactory"
destination="inputQueue" />
<int-jms:message-driven-channel-adapter
id="jmsInbound" connection-factory="queueConnectionFactory"
destination="inputQueue" channel="routingChannel" />

if (message.getHeaders().get("documentType").equals("sec"))
routingChannels.add(outboundSecChannel);
else if (message.getHeaders().get("documentType").equals("unds"))
routingChannels.add(outboundFChannel);
else if (message.getHeaders().get("documentType").equals("CH"))
routingChannels.add(outboundAChannel);
else{
routingChannels.add(errorChannel);
}

mettre en canal en utilisant le routage

Merci de votre aide.

Réponses:

1 pour la réponse № 1

Je pense que vous devriez distinguer la partie consommatricede la production aux threads séparés. Je ne dis pas que vous devez passer aux transactions, mais au moins le simple accusé de réception du message consommé doit être effectué.

Puisque vous dites que vous allez piquer lemessage de retour dans la file d’attente, c’est définitivement le fait de toujours accuser réception du message consommé indépendamment du fait de l’erreur. Donc, ce que je suggère est quelque chose comme placer un QueueChannel ou un ExecutorChannel quelque part après <int-jms:message-driven-channel-adapter> et avant <int-jms:outbound-channel-adapter> pour les laisser travailler dur avec WebLogic JMS dans leurs propres threads.