Ошибка Spring AMQP: метод прослушивателя не может быть вызван с входящим сообщениемJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка Spring AMQP: метод прослушивателя не может быть вызван с входящим сообщением

Сообщение Anonymous »

У меня есть занятия:

Код: Выделить всё

public class MqMessage implements Serializable {
private String event;
private String absolutePath;
private boolean isDirectory;
private Integer hash;
private Node node;

get/set
}
Класс конфигурации:

Код: Выделить всё

public class RabbitConfiguration {

@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory =
new CachingConnectionFactory("localhost");
return connectionFactory;
}

@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(connectionFactory());
}

@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(connectionFactory());
template.setExchange("exchange-events");
return template;
}

//объявляем очередь
@Bean
public Queue myQueue1() {
return new Queue("queue-events");
}

@Bean
public FanoutExchange fanoutExchangeA() {
return new FanoutExchange("exchange-events");
}

@Bean
public Binding binding1() {
return BindingBuilder.bind(myQueue1()).to(fanoutExchangeA());
}
Отправить сообщение

Код: Выделить всё

    public class ServerHandler implements EventHandler {

//сама структура отражающая состояние файлов, содеражащая метоы для работы с ними
@Autowired
Node fileTreeRoot;

SimpleMessageConverter simpleMessageConverter;

@Override
public void setRoot(Node fileTreeRoot) {
this.fileTreeRoot = fileTreeRoot;
}
@Autowired
RabbitTemplate rabbitTemplate;

//логика обработки событий
@Override
public void eventHandle(String event, String path) {

/*business logic */
rabbitTemplate.setExchange("exchange-events");

rabbitTemplate.convertAndSend(new MqMessage(event,fileTreeRoot));
return;
}

public ServerHandler() {

}
Слушатель:

Код: Выделить всё

public class Client {
Node rootNodeClient = new Node();
EventHandler handlerClient = new ClientHandler();

@RabbitListener(queues = "queue-events")
public void onMessage(MqMessage message) {
System.out.println(message.getNode().hashCode());
rootNodeClient = message.getNode();
}
ошибка только при запуске приложения

2017-08-08 12:58:02.128 WARN 5024 --- [cTaskExecutor-1]
s.a.r.l.ConditionalRejectingErrorHandler: выполнение сообщения Rabbit
не удалось прослушивать.
org.springframework.amqp.rabbit.listener.Exception.ListenerExecutionFailedException:
Метод прослушивателя не может быть вызван с входящим сообщением
Причина:
org.springframework.messaging.handler.annotation.support.MethodArgumentNotValidException:
Не удалось разрешить параметр метода с индексом 0 в публичной пустоте
prcjt.client.Client.onMessage(prcjt.message.MqMessage): 1 ошибки:
[Ошибка в объекте «сообщение»: коды []; аргументы []; сообщение по умолчанию
[Значение полезной нагрузки не должно быть пустым]]

Ошибка не всегда существует
Пожалуйста, помогите

Подробнее здесь: https://stackoverflow.com/questions/455 ... ing-messag
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»