Java EE альтернатива публикации подписаться с помощью JMS


Я новичок в Java EE и искал общий способ реализации модели типа publish/subscribe без использования JMS. Я заинтересован в создании простого приложения, которое отображает строки по мере их перемещения с сервера на клиент. Я хочу исследовать, было ли это сделано без опроса, чтобы уменьшить ненужные запросы. События будут немного отличаться друг от друга, поэтому я не думаю, что опрос за определенное время будет лучшим решением, но клиент должен отобразить событие немедленно.

Я читал о различных способах сделать это за пределами Java EE, таких как HtML5 с API сокетов. Но я хочу знать, как это сделать в Java EE, я предполагаю, что есть что-то очень распространенное, что делает это, но я еще не сталкивался с этим. На самом деле я просто ищу название технологии, чтобы провести дальнейшие исследования по ее внедрению.

4 4

4 ответа:

Я отвечу только на часть Java EE, поскольку я не знаком с технологией Apple, которую вы процитировали.

Мне кажется, что корпоративная Java не подходит для такого рода задач. Основной пример использования приложения Java EE: "множество пользователей выполняют множество небольших, в основном независимых задач в централизованном приложении". Java EE предоставляет средства для масштабирования Центрального приложения на любое число пользователей. И это в основномпользователи , которые инициируют и направляют диалог.

Ваше использование однако case требует, чтобы сервер был активной частью. Вы можете, конечно, запускать почти любую логику на сервере приложений Java EE, асинхронные задачи тоже, но это не значит, что вы должны.

Может быть, Hazelcast стоит посмотреть. Он предлагает простую в использовании функцию распределенной темы для публикации/подписки сообщений.

Простой пример из документации:

import com.hazelcast.core.Topic;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.MessageListener;

public class Sample implements MessageListener {

    public static void main(String[] args) { 
        Sample sample = new Sample();
        Topic topic = Hazelcast.getTopic ("default");  
        topic.addMessageListener(sample);
        topic.publish ("my-message-object");
    }  

    public void onMessage(Object msg) {
        System.out.println("Message received = " + msg);
    } 
}

Я не специалист по этой теме, но поскольку никто не ответил, я попытаюсь объяснить, что я знаю.

Прежде все J2EE использует JMS спецификаций в качестве фундаментальной публикации/подписки механизма. Существуют различные брокеры JMS. Важным моментом здесь является то, что некоторые из этих брокеров не привязаны к какому-либо серверу приложений J2EE и могут работать автономно. Проверить, в частности, ActiveMQ Апач и он работает хорошо в качестве самостоятельного посредника JMS. Он имеет привязки ко многим языкам колодца. Так вы могут свободно сочинять не архитектура J2EE с помощью посредника JMS.

Во-вторых, существуют другие брокеры очереди сообщений, соответствующие другим стандартам, которые также могут использоваться в архитектуре J2EE. Примером может служить DDS (Data Distribution Service). Это стандарт OMG и имеет привязки для Java и может быть использован в архитектуре J2EE, если это необходимо.

В-третьих, стандарты веб-служб определяют стандарт брокера WS-Notification. Опять же это не часть J2EE, насколько я знаю, но поддерживается многими поставщиками SOA.

Таким образом, у вас есть много альтернатив, которые могут быть свободно смешаны в архитектуре J2EE.

Надеюсь, это поможет.

Redis имеет механизм публикации / подписки, который может представлять интерес: http://redis.io/topics/pubsub