cross-platform - software - ipc en linux
Sistema de mensajería multiplataforma y en varios idiomas? (8)
Estoy desarrollando un conjunto de aplicaciones que trabajan juntas para crear un sistema para procesar datos de medición. Hay varias razones por las que quiero que se acoplen poco y el sistema sea extensible por terceros, por lo que las aplicaciones se vincularán mediante mensajes.
Estoy buscando un sistema de mensajería que ofrezca enlaces en (al menos) C #, Java y Python, y que admita patrones de mensajes como Publish-Subscribe, Guaranteed Delivery, Selective Consumer (como Peek en .Net Messaging).
Por lo que pude averiguar, no hay nada de malo en JMS o .Net Messaging, es solo que son solo para .Net / Java.
El sistema debería darme el control sobre qué mecanismo de transporte (Sockets, Message Queues, etc.) usar al configurar un canal. Quiero poder escalar a máquinas remotas y agilizar las cosas con las instalaciones de transporte locales.
Si no puedo encontrar nada adecuado, tendré que hacer el mío. Probablemente usaría los búferes de protocolo de Google para la serialización. Si alguien tiene otras recomendaciones para las opciones de tecnología, ignórelas.
Ah, sí, y me gustaría tener un cifrado opcional por canal o por mensaje.
ETA: gracias por todas las respuestas rápidas. Estoy trabajando en los documentos y la propaganda ahora. ¿Alguien ha usado las tecnologías a continuación, y para qué / con qué resultados?
¿Has considerado MPI ?
Como mencionó Paul, pruebe ActiveMQ, que admite muchos clientes de idiomas y protocolos cableados.
BTW ActiveMQ 6.x probablemente utilizará los búferes de protocolo de Google como uno de sus transportes de cable subyacentes :)
Utilicé Apache ActiveMQ en muchos proyectos con gran éxito. Es el agente de mensajes de código abierto más popular y poderoso en la actualidad.
Por cierto, en .Net / C # el proyecto ActiveMQ ha creado la API NMS, que es una API estándar para comunicarse con intermediarios de mensajes en la plataforma .Net, que ahora está integrada en Spring.Net
Puede usar un ESB (Enterprise Service Bus) como Mule . La idea es que envíe sus mensajes al autobús de la manera que desee (JMS, http, correo electrónico) y el autobús hará el enrutamiento por usted. No sé si hay enlaces .NET, pero incluso si no hay ninguno disponible, puede construir el suyo usando un mecanismo de extensión. Por supuesto, esto significa que debe configurar un autobús en alguna parte.
Si desea una compatibilidad y una sólida compatibilidad comercial con casi cualquier cosa, la serie MQ de IBM, ahora Websphere MQ ofrece todas las características descritas en sus requisitos.
A veces obtienes lo que pagas ... ;-)
SonicMQ podría ser una herramienta que estás buscando. Sé que son muy proclives a Progress, pero que también apoyan otras alternativas lingüísticas y son un actor líder en el sector de la mensajería.
activemq
http://activemq.apache.org/cross-language-clients.html
Admite todos los siguientes protocolos
- OpenWire
- DESCANSO
- Pisar muy fuerte
- Notificación de WS
- XMPP
- AMQP
Gracias Paul
Open Message Queue (Open MQ) se incluye en el servidor de la aplicación GlassFish y también se ejecuta de forma independiente. Se inicia en unos segundos y es compatible con el cliente Java y C. El soporte de Stomp se encuentra actualmente en desarrollo en la versión 4.4.
Si desea un "estándar" multilenguaje, lo que significa que no está vinculado al uso de un corredor / intermediario específico como ActiveMQ, SonicMQ o WebsphereMQ, le sugiero que consulte el estándar AMQP ( http://www.amqp.org). ) y corredores relacionados (RabbitMQ, QPid, OpenAMQ; consulte http://www.amqp.org/confluence/display/AMQP/AMQP+Products ).