Я пытаюсь использовать сообщение от ActiveMQ Topi c. Ниже приведен код:
@Configuration
@EnableJms
public class Config {
@Value("${activemq.broker-url}")
private String brokerURL;
@Bean
public ActiveMQConnectionFactory activeMQConnectionFactory() {
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
activeMQConnectionFactory.setBrokerURL(brokerURL);
activeMQConnectionFactory.setTrustAllPackages(true);
return activeMQConnectionFactory;
}
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(){
DefaultJmsListenerContainerFactory defaultJmsListenerContainerFactory = new DefaultJmsListenerContainerFactory();
defaultJmsListenerContainerFactory.setConnectionFactory(activeMQConnectionFactory());
defaultJmsListenerContainerFactory.setPubSubDomain(true);
return defaultJmsListenerContainerFactory;
}
Мой код потребителя:
@Component
@EnableJms
public class Consumer {
@JmsListener(destination = "xml.inbound.topic", containerFactory = "jmsListenerContainerFactory")
public void Processor(final Message xmlMessage) {
}
}
Исключение, которое я получаю:
Неудовлетворенная зависимость, выраженная через поле ' jmsTemplate '; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'jmsTemplate', определенного в ресурсе пути к классу [com / investmentbank / equityfeedsprocessingrevised / config / Config.class]: сбой создания экземпляра бина с помощью метода фабрики; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.jms.core.JmsTemplate]: фабричный метод 'jmsTemplate' вызвал исключение; Вложенное исключение: java .lang.ClassCastException: класс org.springframework.jms.config.DefaultJmsListenerContainerFactory не может быть приведен к классу javax.jms.ConnectionFactory (org.springframework.jms.config.DefaultJmsLactjConv.jpgFactory.avn_Firectory.JAFF. модуль загрузчика 'app')
Что я тут не так делаю? Почему исключение?
Я также пытался:
@Bean
public DefaultMessageListenerContainer jmsListenerContainerFactory() {
DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
dmlc.setConnectionFactory(activeMQConnectionFactory());
dmlc.setPubSubDomain(true);
return dmlc;
}
Исключение, которое я здесь получаю:
Неудовлетворенная зависимость, выраженная через поле 'jmsTemplate'; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'jmsTemplate', определенного в ресурсе пути к классу [com / investmentbank / equityfeedsprocessingrevised / config / Config.class]: сбой создания экземпляра бина с помощью метода фабрики; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.jms.core.JmsTemplate]: фабричный метод 'jmsTemplate' вызвал исключение; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'jmsListenerContainerFactory', определенного в ресурсе пути к классу [com / investmentbank / equityfeedsprocessingrevised / config / Config.class]: сбой вызова метода init; вложенное исключение: java .lang.IllegalArgumentException: требуется свойство 'destination' или 'destinationName'
Просто добавить мой код JmsTemplate выглядит следующим образом:
@Bean
public JmsTemplate jmsTemplate() {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(activeMQConnectionFactory());
jmsTemplate.setPubSubDomain(true);
return jmsTemplate;
}
I Я выполнил JMS Topi c Publisher, используя Apache Camel (Код):
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
CamelContext _ctx = new DefaultCamelContext();
_ctx.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
_ctx.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
from("file:src/main/resources?fileName=data-sample_2.csv")
.process(new MyTransformRevised1())
.to("file:src/main/resources/?fileName=emp.xml")
.split(body().tokenizeXML("equityFeeds", null)).streaming().to("jms:topic:xml.inbound.topic");
}
});
Я могу видеть количество сообщений в столбце "Постановка сообщений" моего имени Topi c.
Что не так? Я прочитал различные сообщения на net, но не смог решить проблему. Пожалуйста, помогите в решении проблемы. Я не могу прочитать сообщение на ActiveMQ Topi c. Дайте мне знать, если какая-то информация отсутствует с моей стороны.