Ich habe versucht, einen Weg zu finden, aber konnte nicht JMSMessageID abrufen, die als Antwort von JMS nach dem Senden einer Nachricht an eine Warteschlange kommt. Würde mir bitte jemand helfen? Vielen Dank. (diese Frage ist ähnlich wie Extract JMSMessageID on response from JMS Queue, aber ich konnte weder die gleiche Frage kommentieren noch erneut anfragen, also eine neue Frage nach dem Vorschlag erstellen)Wie JMSMessageID von JMS-Antwort abzurufen
0
A
Antwort
0
Sie können eine Antwort-Transformer-Java-Klasse verwenden, um dies zu tun. Stellen Sie sicher, dass Sie zuvor einen objectToJms-Transformer verwenden.
import javax.jms.JMSException;
import javax.jms.Message;
import org.apache.commons.lang.StringUtils;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.api.transport.PropertyScope;
import org.mule.transformer.AbstractMessageTransformer;
public class ExtractJmsMessageIdTransformer extends AbstractMessageTransformer {
@Override
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
if (message.getPayload() instanceof Message) {
Message jmsMessage = (Message) message.getPayload();
String jmsMessageId = null;
try {
jmsMessageId = jmsMessage.getJMSMessageID();
logger.info("Found JmsMessage as payload. jmsMessageId = " + jmsMessageId)
} catch (final JMSException e) {
throw new TransformerException(this, e);
}
}
return message;
}
}
EDIT1 Per Kommentare
Sie nicht die ExtractJmsMessageIdTransformer Klasse auf Ihrer Antwort Transformatoren definieren. In Ihrem mule-config.xml fügen Sie folgendes
<custom-transformer class="mypack.ExtractJmsMessageIdTransformer" name="extractJmsMessageIdTransformer"/>
<jms:object-to-jmsmessage-transformer name="objectToJms" />
dann JMS-Warteschlange definieren wie diese
<jms:outbound-endpoint exchange-pattern="request-response" disableTemporaryReplyToDestinations="true" queue="sample" connector-ref="JMS"
doc:name="JMS" transformer-refs="objectToJms" responseTransformer-refs="objectToJms extractJmsMessageIdTransformer"/>
<logger level="INFO" doc:name="Logger" message="#[message.outboundProperties]"/>
Verwandte Themen
- 1. Wie Wert von JSON abzurufen java
- 2. Wie bekomme ich JMSMessageId nach dem Senden mit einem Outbound-Channel-Adapter?
- 3. Wie abzurufen Schienen recaptcha gem Fehler
- 4. Wie authentifiziere ich Java, um URL abzurufen
- 5. wie E-Mails von GPlus abzurufen mit Android
- 6. Wie man Daten von mysql abzurufen nach aktuellen Benutzer Zeitzone
- 7. Wie man Daten von API abzurufen NodeJS Coffee
- 8. Wie Wert von Webseite mit Passwort abzurufen geschützten Login
- 9. Verwenden von GetSchemaTable(), um nur Spaltennamen abzurufen
- 10. Daten können nicht von Objekt abzurufen
- 11. MobileServiceInvalidOperationException beim Versuch, Daten von Azure abzurufen
- 12. Sql Abfrage abzurufen Resultset
- 13. Wie ID für ein benutzerdefiniertes Steuerelement abzurufen
- 14. wie Objekt ausgewählt Array in mongodb abzurufen
- 15. Firebase - Wie Daten aus .Sobald Anruf abzurufen
- 16. Wie Suchparameter in nicht-html5-Modus abzurufen
- 17. Wie abzurufen JSON über ASP.Net context.Request
- 18. Wie TypeToken verwenden, um Typparameter abzurufen?
- 19. data_bag_item, um einzelnen Schlüsselwert abzurufen
- 20. Swift Serviceklasse Firebase Daten abzurufen
- 21. Einfachste Möglichkeit, browserübergreifend XmlHttpRequest abzurufen
- 22. Unable Metadaten abzurufen für ‚MVCMusicStore.Models.Album
- 23. Reflexion: verschiedene Möglichkeiten Eigenschaftswert abzurufen
- 24. Xquery, um inneres Elementattribut abzurufen
- 25. Ist es möglich, Eigenschaftsnamen von einem datengebundenen Objekt abzurufen?
- 26. Nicht in der Lage, Eingabestreamdaten von httpExchange abzurufen
- 27. korrekte Weg, um ein einzelnes Objekt von Realm-Datenbank abzurufen
- 28. NuGet Pack - Fehlgeschlagen Informationen von entfernten Quelle abzurufen
- 29. Wie Wert einer ui abzurufen: param im Backing Bean
- 30. , wie die Größe eines CCSprite abzurufen, die andere CCSprites
ich null ID bekommen, wird es vom Eingang der Anmeldung? '
Mein XML ist wie folgt: '
Protokoll zeigt unter Ausgabe: mypack.ExtractJmsMessageIdTransformer: JMSMessage als Nutzlast gefunden. jmsMessageId = null. – Kepler186f
Danke für die Antwort. Entschuldigung für meine schlechte Formatierungsantwort, auf die ich immer noch dran bin. Bitte überprüfen Sie meinen obigen Code und schlagen Sie vor, wo die Korrekturen benötigt werden. – Kepler186f
Grundsätzlich verwende ich entweder Einweg-oder Anfrage-Antwort-Austausch-Muster mit TIBCO EMS, ich würde nur die NullPayload, also keine JMSMessageID. Fehlt uns etwas am Konfigurationsende von Mule Flow oder einfach nur beim TIBCO EMS? Ich kann nicht mit TIBCO EMS behaupten, da ein grundlegender TIBCO JMS-Fluss sofort die Nachrichten-ID im Antwortschema erhält. Auch mit einem Beispiel-Java-Code versucht, ich war erfolgreich in der tatsächlichen gesendeten Nachricht JMSMessageID, nur Mule-Flow ist nicht in der Lage, es zu bekommen. Irgendwelche anderen Vorschläge von der Konfiguration/vom Code enden bitte? Danke im Voraus. – Kepler186f