topic net example c# queue servicebus

c# - net - service bus explorer



C#Queue o ServiceBus sin dependencias? (10)

¿Hay algún producto (idealmente de código abierto, pero no necesario) que permita un despliegue de dependencia cero? cada bus de servicio o biblioteca de cola que he podido encontrar tiene una dependencia en una de las aplicaciones de cola (como msmq) o en una base de datos. Me gustaría una solución muy liviana que pueda agregar una referencia a mi aplicación, compilarla e implementarla con la menor configuración posible.

En un mundo ideal, el bus de cola / servicio se ejecutará en IIS y permitirá que los clientes web y ricos hablen con él.

Tal herramienta sería ideal para el prototipado rápido de grandes sistemas distribuidos en una máquina de desarrollo local.


Esta publicación ayende ofrece una comparación interesante de tres autobuses de servicio. Usamos NServiceBus y pensamos si no está claro si Udi Dahan respondería a cómo conectaría la cola no dependiente.

Trabajamos con MSMQ felizmente, pero hay otras opciones y, en teoría, debería estar abierto a prácticamente cualquier cosa, dado que puede perder algo de fiabilidad y durabilidad dependiendo de su elección.


Si estás feliz de ser:

  1. Específico de Windows
  2. Limitado al dominio local
  3. Gravemente limitado en el tamaño del mensaje admitido
  4. Ajustar las llamadas win32 subyacentes en P / Invoke
  5. Trate con la encuesta usted mismo
  6. Tratar con los hacks necesarios para permitir la comunicación de ida y vuelta
  7. Tratar con la configuración compartida necesaria para mantener los nombres sincronizados

Entonces, un contenedor rápido alrededor de la API de MailSlot de Windows podría ser suficiente.

Este simple ejemplo es una base razonable para comenzar.

Este artículo contiene información adicional, pero asume que el caso de uso es a través de un control (en lugar de un Componente como debería ser) así como de una integración pobre de WinForms, por lo que debe considerarse para lectura incidental en lugar de una base para cualquier biblioteca.

Este artículo es C ++ pero tiene un estándar más alto (y un comentarista lo ha ampliado para admitir la agrupación de mensajes más grandes en varios más pequeños).

Obtienes 424 bytes (por lo que con los caracteres .Net 212) es posible que desees pasar a ASCII para duplicar la longitud útil de tu mensaje si estás hablando de texto.

Tenga en cuenta que a pesar de su simplicidad, limitaciones y falta de funciones, proporciona entrega de multidifusión, algo a menudo complejo para aplicar capas a un protocolo punto a punto.


¿Por qué no el servicio de mensajes de Amazon Simple Queue Service?


De forma similar a la sugerencia de ShuggyCoUk, puede armar una cola (o colas) utilizando la base de datos ESENT incorporada de Windows (ya viene instalada con Windows). Hay una biblioteca de acceso a código administrado (código abierto): http://www.codeplex.com/ManagedEsent . Si te quedas con la escritura / lectura de CLOB o BLOB, debería funcionar bien. Si quieres ser realmente inteligente, puedes usar NServiceBus y escribir (¿contribuir?) Almacenamiento y transporte de suscripción con sabor a ESENT. Hay algunas incursiones en el uso de ESENT en el blog de Ayende también (tendrás que buscar en su repositorio SVN los bits jugosos).


Movimos nuestros proyectos de MSMQ a ActiveMQ . es realmente mejor :)
ActiveMQ es una cola de código abierto , basada en el servidor web Apache.
Lo usamos en producción en un flujo de trabajo de datos frecuentemente alto, donde msmq tiene un gran problema (trabajamos con msmq por año)
La implementación de csharp es nms


Rhino Queues de Ayende es exactamente lo que estás buscando, esta es la publicación del blog que lo presenta:

http://ayende.com/Blog/archive/2008/08/01/Rhino-Queues.aspx

Creo que todas las limitaciones mencionadas en esta publicación se han solucionado desde entonces.

Desde la publicación del blog, ¿qué colas de rinoceronte es:

  • XCopyable, administración cero, incrustado, servicio de colas asíncronas
  • Robusto frente a las redes
  • interrupciones System.Transactions support
  • Rápido
  • Funciona a través de HTTP

Actualmente estoy trabajando en un bus de servicio basado en WCF de fuente abierta. Puede encontrarlo aquí: http://rockbus.codeplex.com/ . Admite suscripciones dinámicas (@ tiempo de ejecución), repositorio de suscripciones (base de datos), transportes conectables, enrutamiento basado en contenido basado en XPath, entrega transaccional a través de protocolos wcf, entrega de redireccionamiento, evaluación de suscripción conectable y más. ¡Echar un vistazo!


¿Has pensado en utilizar un servicio como IronMQ en http://Iron.io?

No tendría dependencias, podría prototipar rápidamente aplicaciones sin configurar ninguna infraestructura de cola, y está altamente disponible y rápido.

Actualmente no hay una versión instalable localmente, pero está basada en el próximo protocolo de OpenStack, por lo que habrá.

Por cierto, trabajo para Iron.


Pruebe https://github.com/mcintyre321/PieQ : este es mi intento de escribir una cola de trabajo incrustada, persistente, de configuración cero e integrada. Probablemente necesite un poco de amor, pero creo que podría ser el tipo de herramienta que estás buscando.


He desarrollado una biblioteca InMemory JMS que se puede usar para probar aplicaciones JMS sin conectarse realmente a los proveedores / servidores JMS (Think of hsqldb). No tiene que ocuparse de la conexión o protocolo ni nada, todo lo que necesita hacer es enviar y recibir mensajes.

https://github.com/Dhana-Krishnasamy/InMemoryJMS