我试图从JSON队列中获取消息,然后转换为特定的数据类型并存储在db中。
尝试了来自stackoverflow的几种解决方案,但确实可行。 我在application.properties中添加了交换,队列和路由键 所有依赖项都添加了w.r.t json Rabbitmq和gson 我也尝试过使用jsafactory,但没有成功
@配置 公共课程测试{
@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();
}
}
监听器类
@Component 公共类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]中创建名称为'queue'的bean时出错:找不到匹配的工厂方法:factory bean'Test';工厂方法'queue()'。检查是否存在具有指定名称的方法,并且该方法是非静态的。