Pregunta

¿Hay un buen marco ligero para Java que proporciona la publicación / suscripción patrón?

Algunas de las características ideales

  • Apoyo a los genéricos
  • El registro de varios suscriptores a un editor
  • API principalmente interfaces y algunas implementaciones útiles
  • puramente en memoria, de persistencia y de transacción garantías no son obligatorios.

Yo sé de JMS pero eso es demasiado para mi necesidad. Los Publish / datos suscritos son el resultado de las exploraciones de un sistema de archivos, con los resultados del análisis que se alimentan a otro componente para el procesamiento, que a continuación se procesan antes de ser alimentada a otro y así sucesivamente.

EDIT: Todo ello dentro del mismo proceso. PropertyChangeListener de los granos no acaba de cortarlo, ya que se informe sobre cambios en las propiedades, en lugar de la publicación de artículos específicos. Podría calzador ProprtyChangeListener al trabajo por tener una propiedad "último objeto publicado", y así publicada objetos. PropertyChangeListeners no son compatibles con los genéricos, y están muy arraigados en la semántica de cambio de propiedad, en lugar de pura publicación / suscripción. El / patrón observable java.util Observador sería bueno, pero Oberver es una clase concreta.

¿Fue útil?

Solución

JMS es tan ligero o pesado como lo configura. Utilizamos por ejemplo HornetQ en un proyecto con una memoria en la cola. Es fácil de instalar, no necesita ningún tipo de configuración basado en JNDI y es muy fácil de usar.

Creo que JMS como una API para Mensaje Pub / Sub es tan fácil como se pone. (Y no es más fácil;)

Otros consejos

Parece este reune los requisitos:

EventBus de Google Biblioteca Guayaba - "editoras suscribirse al estilo de comunicación entre los componentes sin necesidad de los componentes a registrar explícitamente entre sí ". También puede ser un AsyncEventBus que va a distribuir eventos en otro hilo.

Algunas opciones adicionales a tener en cuenta:

  1. Si está en un mismo proceso es posible que el patrón Observador se puede utilizar. Los suscriptores pueden añadir detectores y recibir notificaciones de eventos. observable ya forma parte de la API de Java.

  2. FFMQ es una aplicación Java completo, ligero , Fast JMS 1.1 cola de aplicación.

Dado que está utilizando la primavera, no sé si eres consciente de que la primavera tiene su propia marco ligero caso . Se utiliza sobre todo en el marco en sí, pero es perfectamente utilizable por código de la aplicación.

Por defecto, es sincrónica pub / sub, pero se puede hacer que sea asíncrono utilizando un ApplicationEventMulticaster.

Camel también es un candidato bueno. Especialmente con el patrón de publicación-suscripción

camello puede ser embebido y es ligero. Propone patrones de integración empresarial -. Muchas herramientas útiles para la integración, dentro de una aplicación o incluso con otros actores (de ahí la 'integración')

Integración primavera pero más completa de la OMI.

Si está cruzando los límites del proceso a continuación, un cierto grado de "peso" se va a incurrir. ¿Por qué dice que JMS es el peso pesado? El API es bastante simple? Hay supuestamente implementaciones de peso ligero, por ejemplo enlace de texto costos más pesados ??y una persistencia transaccionalidad tales son opcionales.

¿Qué se necesita es más claro que esto?

Bob Lee tiene una clase QueueFile en http://snipt.org/GWm/ que le puede resultar interesante. Es un simple cola persistente y puede ser utilizado por varios consumidores. Parece que usted no necesita persistencia, pero ya que todo el asunto es tan ligero que todavía podría ser útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top