2012-05-29 2 views
2

AppEngine должен вызывать исключение ChannelFailureException всякий раз, когда возникает ошибка при отправке сообщения на канал, например. когда канал не подключен.appengine ChannelFailureException не выбрасывается в dev

Похоже, что сервер-разработчик не выбрасывает это исключение. Это действительно показывает предупреждение в консоли:

com.google.appengine.api.channel.dev.ChannelManager sendMessage 
WARNING: Skipping message to unconnected channel: <clientId> 

это предупреждение кажется генерироваться: com.google.appengine.api.channel.dev.LocalChannelFailureException

Однако, фактическое исключение (т.е. com.google.appengine.api.channel.ChannelFailureException) не выбрасывается. Кто-нибудь знает, как тестировать это исключение в процессе разработки?

ответ

1

В случае, если канал не подключен, и вы пытаетесь отправить ему сообщение, ошибка не ожидается.

Исключение ChannelFailureException выдается в случаях, когда вы предоставляете неверный клиент или сообщение или если есть проблема с инфраструктурой канала, чтобы сообщение не могло быть отправлено.

+0

нормально, так выше поведение присутствует только в среде Dev? Не могли бы вы рассказать о том, почему ** ПРЕДУПРЕЖДЕНИЕ: Пропуск сообщения на несвязанный канал: отображается? **. Это предупреждение отображается только тогда, когда канал не подключен (т. Е. Пользователь выйдет из системы). ClientId и сообщение хорошо сформированы. Если пользователь вошел в систему, сообщение отправляется без предупреждения с использованием того же clientId и сообщения. –

+0

Предупреждение просто информационное. Это не произойдет в производстве. –

+0

oh ok. так что исключение будет вызываться при сбое инфраструктуры канала. Итак, что мы можем сделать, когда это произойдет? Должны ли мы повторить отправку сообщения? И поскольку исключение не выбрано в dev, я думаю, что единственный способ проверить (если возможно) - загрузить и попробовать, пока он не выкинет это исключение? –

0

Это состояние также появляется, когда вы смешиваете токен и клиент. В моем случае это было потому, что я пытался создать

message = ChannelMessage(token, message); 

вместо

message = ChannelMessage(clientId, message); 

где

String token = channelService.createChannel(clientId);