2017-12-13 18 views
1

weblogic jmsとのバネ統合を使用しています。私の論理はjsonオブジェクトをjmsキューに入れ、それをキューからチャネルに消費し、それを検証し、特定のフィールドに基づいてルーティングします。エラーがある場合は、修正してキューに戻してください。私には2つの問題があります。 1.メッセージがオブジェクトに消費されるとき、私はまだオブジェクトをweblogicの管理コンソールで保留中であると見ることができます。 2.検証を修正した後、変更されたオブジェクトをキューに入れると、キューから元のオブジェクトを取得しています。jms、weblogicとのバネ統合、メッセージがチャネルに消費された後でもメッセージがキューに表示される

<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); 
    } 

は、あなたの助けのための

感謝をルーティング使用してチャネルに置きます。

答えて

1

消費する部分と別のスレッドを区別する必要があると思います。トランザクションに切り替える必要があるとは言いませんが、少なくとも消費されたメッセージに対する単純な確認を行う必要があります。

メッセージをキューに戻すことを伝えているので、間違いなく実際に消費されたメッセージを確認するのは間違いありません。ですから、QueueChannelまたはExecutorChannel<int-jms:message-driven-channel-adapter>の後と<int-jms:outbound-channel-adapter>の前に置いて、WebLogic JMSを自分のスレッドで実行できるようにすることをお勧めします。

+0

@Artem、ありがとうございました。私は変更されたメッセージを新しいメッセージとして入れます。 – sreenivas

関連する問題