Я пытался получить сообщение из очереди в 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 ()'.Убедитесь, что метод с указанным именем существует и не является статичным.