¿Alguna alternativa gratuita de código abierto a Tibco Rendezvous para C#? (bus de mensajes entre procesos)

Estoy buscando una buena implementación de código abierto de un bus de mensajes entre procesos, posiblemente basado en canalizaciones con nombre.

¿Hay algunos recomendables por ahí (que todavía se mantienen activamente)? mis requisitos son

  1. Gratis y de código abierto (no Tibco Rendezvous, no NServiceBus)
  2. Debe poder ejecutarse fácilmente sin privilegios de administrador sin necesidad de más instalaciones (por lo tanto, no RabbitMQ)

Sé que WCF+NamedPipes son una opción popular para esto, pero me parece que la estructura de mi aplicación hace que el uso de WCF sea cada vez más inocuo, por lo que me gustaría explorar alternativas.

Me topé con NetMQ.ReactiveExtensions que parece muy interesante en principio, usa Protobuf + NetMQ. Pero no estoy seguro de cuán confiable es realmente. A primera vista, por ejemplo, envía 3 partes para cada mensaje (cadena de tema, código para identificar el estado onNext/onError/onCompleted para RX), pero me pregunto si no se confundiría si algún suscriptor se conecta mientras se envía un mensaje. transmitido y pierde, por ejemplo, la primera parte.

De todos modos, ¡cualquier recomendación es bienvenida!


Probablemente no sea relevante para la pregunta, pero solo para contextualizar lo que estoy tratando de hacer:

En principio, mi aplicación consta de 3 componentes/3 tipos de procesos:

A. Complemento de Microsoft Excel B. Un editor de código C. (Opcional) un depurador Por lo general, cuando se inicia Excel (A), generará B, que a su vez generará C. Y la comunicación se verá como A <-> B < -> c

Por supuesto, puede iniciar varias instancias de Excel (A), y cada una generará y se comunicará con su propia B.

En algunas circunstancias, una instancia de B podría necesitar enviar/recibir mensajes de TODOS los procesos de tipo A (por ejemplo, abra el Editor fuera de Excel, luego deberá transmitir un mensaje solicitando instancias de Excel abiertas/cargadas/adecuadas para elegir de, y todos los procesos A deberán responder)

Con WCF, todo esto significa que tengo que "explotar" las funciones de devolución de llamada de WCF para implementar la comunicación bidireccional, tengo que crear una gran cantidad de contratos de servicio, puntos finales, etc., y tener tanto uno a uno como El tipo de mensajes de uno a muchos también me da un poco de dolor de cabeza.

Respuestas (1)

Pruebe Apache Geode , que es Gemfire de código abierto, que yo sepa, es un competidor de Tibco RV. Tiene almacenamiento en memoria usando "regiones" desde las cuales produce avisos de eventos para clientes suscritos cuando una región cambia (es decir, se actualiza). Los clientes pueden suscribirse a una región en particular o a todas las regiones. Creo que esto puede responder a su caso de uso.

Se le ha llamado mapa hash con esteroides.

Bienvenido a bordo. Gracias por responder, pero tenga en cuenta que no nos gustan las respuestas de solo enlace, ya que los enlaces pueden romperse con el tiempo. Sería útil si agregara algún texto que explique por qué su recomendación responde a la pregunta. Si lees Cómo responder , tendrás una mejor idea. De nuevo, bienvenido a bordo. Esperamos recibir más contribuciones de usted y ayudarlo en lo que podamos :-)