mail: тип возвращаемого адаптера входящего канала - PullRequest
0 голосов
/ 03 мая 2018

Я настраиваю mail: входящий канал-адаптер , используя аннотации Java и ImapIdleChannelAdapter.

Непонятно, какой тип объекта передать от @InboundChannelAdapter до @ServiceActivator.

Фрагмент кода:

@InboundChannelAdapter(value = "inputChannel", poller = @Poller(fixedDelay = "5000"))
public ImapIdleChannelAdapter getMailAdapter() {
    ImapMailReceiver mailReceiver = new ImapMailReceiver("imaps://username:password@map-mail.outlook.com:993/INBOX");
    ...
    return new ImapIdleChannelAdapter(mailReceiver);
}

@ServiceActivator(inputChannel = "inputChannel")
public void readMessage(Message<javax.mail.Message> message) {
    System.out.println(message.getPayload().getAllRecipients());
}

ImapIdleChannelAdapter источник говорит, что "полезная нагрузка сообщения будет полученным экземпляром javax.mail.Message". Тем не менее, я получаю исключение приведения класса ImapIdleChannelAdapter cannot be cast to javax.mail.Message при выполнении кода выше.

Если я изменю аргумент метода SA на javax.mail.Message, я получу spel.SpelEvaluationException: EL1004E: Method call cannot be found on .. type

@ServiceActivator(inputChannel = "inputChannel")
public void readMessage(javax.mail.Message message) throws MessagingException {
    System.out.println(message.getAllRecipients());
}

1 Ответ

0 голосов
/ 03 мая 2018

ImapIdleChannelAdapter является компонентом, управляемым событиями. Это не источник для опроса. Он будет создавать сообщения своими внутренними задачами.

Вы должны удалить @InboundChannelAdapter из его конфигурации и добавить простой @Bean. channel должен быть сконфигурирован для одного ImapIdleChannelAdapter объекта напрямую.

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