Ошибка RabbitMQ при создании компонента с именем 'queue', определенным в ресурсе пути к классу - PullRequest
0 голосов
/ 01 февраля 2019

Я пытался получить сообщение из очереди в JSON, а затем преобразовать в определенный тип данных и сохранить в дБ.

Пробовал пару решений из stackoverflow, но dint сработал.Я добавил exchange, queue & routekey в application.properties. Все зависимости добавлены с json rabbitmq и gson. Я также пробовал использовать jsafactory, но не работал

@ Конфигурация открытый класс Test {

@Value("${queue}")
String queueName;

@Value("${exchange}")
String exchange;

@Value("${routekey}")
private String routingkey;

@Bean
Queue queue() {
    return new Queue(queueName, false);
}

@Bean
TopicExchange exchange() {
    return new TopicExchange(exchange);
}

@Bean
Binding binding(Queue queue, TopicExchange exchange) {
    return BindingBuilder.bind(queue).to(exchange).with(routingkey);
}

@Bean
MessageHandlerMethodFactory messageHandlerMethodFactory() {
    //Impl
}

public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) {//Impl
}

@Bean
public MappingJackson2MessageConverter consumerJackson2MessageConverter() {
    return new MappingJackson2MessageConverter();
}

@Bean
public Jackson2JsonMessageConverter jsonMessageConverter() {
    return new Jackson2JsonMessageConverter();
}

}

Класс слушателя

@ Открытый класс компонента MainListener {

@Autowired
SomeService someService;


@RabbitListener(queues = "${queue1}"/*, containerFactory="jsaFactory"*/)
public void listnerEx(String someJson) throws Exception {

           //JSON Object Parsed and Stored in DB
}

Ошибка: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'очередь 'определена в ресурсе пути к классу [com / demo / Test.class]: не найден соответствующий фабричный метод: фабричный компонент' Test ';фабричный метод 'queue ()'.Убедитесь, что метод с указанным именем существует и не является статичным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...