Передача сообщений с канала rabbitmq на канал Java NIO - PullRequest
0 голосов
/ 18 марта 2012

Я создаю компонент чата (где все обсуждения сохраняются) для приложения, и я планировал использовать сервер длинных опросов в качестве интерфейса между клиентскими компьютерами и сервером rabbitmq, который будет анализировать формат и ставить сообщения в очередь вочередь заданий (на rabbitmq) должна обрабатываться сельдереем, который затем проверит, разрешена ли публикация, проверив в БД некоторую информацию и т. д., сохранит сообщения в БД и снова поставит их в очередь в rabbitmq, на этот раз он будет использовансервер длинных опросов, который нужно отправить на клиентские машины.

Я планировал установить одно подключение от кроличьего сервера к серверу с длинным опросом, содержащему много каналов, каждый из которых будет соответствовать каналу сокета nio, где клиентский компьютер прослушивает на другом конце.

Сервер длинных опросов будет написан с использованием библиотек Java Nio.Мой вопрос заключается в том, каким будет эффективный способ отправки сообщений из канала AMQP в канал сокетов, которые будут отправлены клиентам?

Из моего понимания NIO единственный раз, когда ключ выбора должен быть зарегистрирован для OP_WRITE, - это когда предыдущая попытка вызова write () возвратила 0. В этом случае, однако, я заинтересован в записи в сокетный канал, когда информацияприсутствует на соответствующем канале AMQP.Как я могу предупредить канал сокета, как только данные поступают на соответствующий ему канал amqp, чтобы я мог отправить данные через канал сокета клиенту?

1 Ответ

1 голос
/ 19 марта 2012

Просто позвоните пишите ()! Не нужно ничего рассказывать SocketChannel. Затем, если write () вернет ноль, выполните OP_WRITE.

...