2 Stimmen

Problem beim Routing zwischen zwei Beans mit Apache Camel

Meine Kamelroute ist unten angegeben

 <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >
    <route>
      <from uri="bean:SendClass?method=send" />
      <to uri="jms:MyQueue" pattern="InOnly" />
    </route>
    <route>
    <from uri="jms:MyQueue" />
    <to uri="bean:recvClass?method=recv" />
    </route>
  </camelContext>

Die Sendemethode sendet Nachrichten, wenn sie von einem 3rd-Party-Pojo in unregelmäßigen Abständen aktiviert wird, aber das Problem, das ich denke, ist, dass Camel die Routen neu startet das Problem ist, dass Camel die Routen neu startet, sobald die Nachricht von der recv bean empfangen wurde und die gleiche Nachricht erneut sendet (hunderte von ihnen in einer Sekunde). Idealerweise möchte ich, dass es die Nachricht sendet, wenn die Sendemethode aktiviert wird und eine neue Nachricht erstellt wurde (d.h. die JMS-Warteschlange sollte eindeutige Nachrichten haben). wie mache ich das?

mögliche Lösungen sind:

  1. Gibt es ein Attribut, das ich innerhalb der <from.../> um dies zu tun?
  2. einen Prozessor schreiben, der eindeutige Nachrichten zwischen der Sende-Bohne und der Warteschlange filtert.
  3. Gibt es eine andere Möglichkeit der Weiterleitung ohne Verwendung der <from uri="bean:..." />

danke sanre6

2voto

Claus Ibsen Punkte 54333

Sie sollten nicht den 1. Weg nehmen. Wenn Sie das tun, sagen Sie Camel, dass es ständig die Send-Methode auf dieser Bean aufruft und sie weiterleitet. Und daher, warum Sie 100s von Nachrichten pro Sekunde sehen.

Stattdessen sollten Sie eine Camel-API in Ihrem Bean-Code verwenden und die Nachricht an die JMS-Warteschlange senden. Zum Beispiel mit einem ProducerTemplate.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X