Java EE альтернатива публикации подписки с использованием JMS - PullRequest
4 голосов
/ 10 октября 2011

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

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

Ответы [ 4 ]

3 голосов
/ 11 октября 2011

Может быть 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);
    } 
}
1 голос
/ 11 октября 2011

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

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

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

1 голос
/ 11 октября 2011

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

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

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

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

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

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

0 голосов
/ 11 октября 2011

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

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