Нужно ли мне добавлять что-нибудь еще в конфигурационный файл?

#spring-rabbit

#spring-rabbit

Вопрос:

Это мой класс конфигурации.

 @Configuration
public class MessageConfig {

public static final String KEY = "anil_key";
public static final String EXCHANGE = "anil_exchange_one";
public static final String QUEUE = "anil_queue";

@Bean
public Queue queue() {

    return new Queue(QUEUE, false);
}

@Bean
public DirectExchange exchange() {
    return new DirectExchange(EXCHANGE);
}

@Bean
public Binding binding(Queue queue, DirectExchange exchange) {

    return BindingBuilder.bind(queue).to(exchange).with(KEY);

}

@Bean
public MessageConverter converter() {
    return new Jackson2JsonMessageConverter();
}

@Bean
public AmqpTemplate template(ConnectionFactory connectionFactory) {
    final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
    rabbitTemplate.setMessageConverter(converter());
    return rabbitTemplate;
}
  

и это мой класс publisher

 @RestController
@RequestMapping("/order")
public class Publisher {
@Autowired
private AmqpTemplate rabbitTemplate;

@PostMapping("/{restaurentName}")
public String bookOrder(@RequestBody Order order,@PathVariable String restaurentName) {
    
order.setOrderId(UUID.randomUUID().toString());

OrderStatus status = new OrderStatus(order,"progress","successfully received");

rabbitTemplate.convertAndSend(MessageConfig.EXCHANGE, MessageConfig.KEY, status);

return "success";
    
}
  

Я получаю сообщение об ошибке ниже.

2020-10-04 14:28:24.628 ОШИБКА 17008 — [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory : отключение канала: ошибка канала; метод протокола: #метод<channel.close>(reply-code=404, reply-text=NOT_FOUND — нет обмена ‘anil_exchange_one’ в vhost ‘/’, class-id= 60, method-id= 40).

Ответ №1:

Вам нужно RabbitAdmin @Bean объявить exhange / queue / привязку.

 @Bean
RabbitAdmin admmin(ConnectionFactory cf) {
    return new Rabbitadmin(cf);
}
  

Комментарии:

1. Как добавить RabbitAdmin?

2. После добавления RabbitAdmin также возникла та же проблема.

3. Включите ведение журнала ОТЛАДКИ, чтобы увидеть действия администратора при открытии соединения.

4. Завершение работы канала: ошибка канала; метод протокола: #метод<channel.close>(reply-code=404, reply-text=NOT_FOUND — нет обмена ‘anil_exchange_one’ в vhost ‘/’, class-id=60, method-id=40)

5. Тогда что-то не так; опубликуйте свой полный проект где-нибудь, чтобы я мог увидеть, что не так.