#java #activemq
#java #activemq
Вопрос:
Я реализовал пользовательский плагин ActiveMQ broker, используя класс BrokerFilter. Я переопределил метод отправки, показанный ниже.
public void send(final ProducerBrokerExchange producerExchange, final Message messageSend) throws Exception {
logger.info("Message : " messageSend);
// Returns the JMS Type of Mesage
logger.info("Message Type : " messageSend.getType());
// Lookig for method to get the message text
?
}
В первой строке журналов отображается текст сообщения в объекте, но, похоже, нет метода, доступного для получения текста сообщения.
INFO | Message : ActiveMQTextMessage {commandId = 5, responseRequired = false, messageId = ID:192.168.10.6-63132-1613444356003-4:1:1:1:1, originalDestination = null, originalTransactionId = null, producerId = ID:192.168.10.6-63132-1613444356003-4:1:1:1, destination = topic://reporting, transactionId = null, expiration = 0, timestamp = 1613444364819, arrival = 0, brokerInTime = 0, brokerOutTime = 0, correlationId = , replyTo = null, persistent = false, type = NewAgent, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null, marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties = true, readOnlyBody = true, droppable = false, jmsXGroupFirstForConsumer = false, **text = Hello** }
INFO | getType : New
Может ли кто-нибудь указать мне соответствующий класс или метод для получения / перехвата текста сообщения? Моя цель — получить текст / тело сообщения и сохранить его в redis.
Ответ №1:
Вам нужно выяснить, что это за сообщение, и использовать его, чтобы извлечь текст (или что-то еще) из сообщения. Попробуйте что-то вроде:
public void send(final ProducerBrokerExchange producerExchange, final Message messageSend) throws Exception {
logger.info("Message : " messageSend);
// Returns the JMS Type of Mesage
logger.info("Message Type : " messageSend.getType());
logger.info("Message Class : " messageSend.getClass().toString());
// Lookig for method to get the message text
if (messageSend instanceof ActiveMQTextMessage) {
ActiveMQTextMessage txtMsg = (ActiveMQTextMessage)messageSend;
Logger.info("Message Text : " txtMsg.getText();
}
}
Документы текстовых сообщений.