Я попытался найти способ, но не удалось получить JMSMessageID, который приходит как ответ от JMS после отправки сообщения в очередь. Кто-нибудь, пожалуйста, помогите мне с этим? Благодарю. (этот вопрос похож на Extract JMSMessageID on response from JMS Queue, но я не мог ни комментировать, ни повторять запрос по тому же вопросу, поэтому создавая новый вопрос, следующий за предложением)Как получить JMSMessageID из ответа JMS
0
A
ответ
0
Для этого вы можете использовать java-класс для трансформатора ответа. Перед этим поставьте трансформатор objectToJms.
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 Комментарии
Вы не определяет класс ExtractJmsMessageIdTransformer на ваших трансформаторов реагирования. В вашем муле-config.xml добавьте следующие
<custom-transformer class="mypack.ExtractJmsMessageIdTransformer" name="extractJmsMessageIdTransformer"/>
<jms:object-to-jmsmessage-transformer name="objectToJms" />
затем определить свою очередь JMS, как этот
<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]"/>
Смежные вопросы
- 1. Как получить JMSMessageId после отправки его с адаптером исходящего канала?
- 2. JMS для шаблона запроса-ответа
- 3. Транзакция при отправке ответа JMS
- 4. JMS запрос/шаблон ответа в транзакционной среде
- 5. JMS запрос/шаблон ответа в графе
- 6. Как получить/получить идентификатор из ответа xml
- 7. Получить данные из ответа
- 8. JMS Исходящий ответ отклика на ввод ответа
- 9. Получить изображение из ответа
- 10. JMS: не удается выбрать сообщение jms из темы по селектору
- 11. отправка ответа на очередь jms в синапсе
- 12. Spring Integration JMS Gateway без прослушивателя ответа
- 13. Преобразование IBM JMSMessageId в String в JAVA
- 14. Какова реализация фильтра в JMS ActiveMQ в Mule?
- 15. Как определить ответ против ответа в теме jms?
- 16. Как получить IP-адрес из ответа DNS-ответа
- 17. JMS-сообщение не удалось получить из очереди
- 18. Как использовать метод receiveSelected в JMS
- 19. Получить значение из ответа обещания
- 20. Как получить содержание ответа?
- 21. Как получить элемент из ответа XML
- 22. Как получить значение из ответа JSON
- 23. Как получить атрибут из ответа HTTP get
- 24. Как получить изображение из ответа json?
- 25. Как получить имя сервера из ответа HTTP
- 26. Как получить значение ответа ajax из службы?
- 27. Как получить данные из ответа NXOAuth2Request
- 28. Как получить информацию из вложенного ответа JSON?
- 29. Как получить html ответа из HttpModule?
- 30. Как получить узел из ответа на мыло?
Я получаю нулевой идентификатор, является его входом от входа? '
Мой XML выглядит следующим образом: '
Журнал показывает ниже: mypack.ExtractJmsMessageIdTransformer: найдено JmsMessage как полезная нагрузка. jmsMessageId = null. – Kepler186f
Спасибо за ответ. Извините за мой плохой отформатированный ответ, я до сих пор настроен. Пожалуйста, проверьте мой код выше и укажите, где он нуждается в исправлениях. – Kepler186f
В принципе, я использую одноразовый или запрос-обменный шаблон обмена с TIBCO EMS, я бы просто получил NullPayload, следовательно, не JMSMessageID. Не хватает ли мы чего-то из конца конфигурации потока Mule или только с помощью TIBCO EMS? Я не могу требовать его с TIBCO EMS, так как основной поток TIBCO JMS мгновенно получит messageid в схеме ответа. Также, попробовав пример кода Java, мне удалось получить сообщение JMSMessageID отправленного сообщения, просто поток Mule не смог его получить. Любые другие предложения из конфигурации/кода, пожалуйста? Заранее спасибо. – Kepler186f