Porque el proyecto necesita que algunos datos sean enviados y recibidos, debido a que la cantidad de datos es relativamente grande, unos 3 millones de datos al día
Al principio, usaba http post para enviar datos, pero descubrí que era demasiado lento y la velocidad de envío era mucho menor que la de recepción.
Por lo tanto, si quieres usar una conexión de socket larga para enviar y recibir datos, escribir tú mismo el servidor socket y el cliente, uno es una pérdida de tiempo, pero puede que no se haga bien
Finalmente, activemq se utiliza para enviar y recibir datos
Primero, el código de productor es el siguiente:
Para consumidores, existen dos modelos:
1: Suscripción ordinaria, sin necesidad de una "suscripción" persistente, es decir, al conectarte puedes recibir mensajes, y no puedes recibir mensajes antes de conectarte, usando "CreateConsumer" 2: Suscripción persistente, tras conectarte, puedes recibir datos que no se han enviado antes, usando "CreateDurableConsumer"
Enlaces a la introducción de CreateDurableConsumer:El inicio de sesión del hipervínculo es visible.
Crea una suscripción persistente no compartida sobre el tema especificado si aún no existe, y crea un consumidor en esa suscripción persistente. Este método crea una suscripción persistente sin usar un selector de mensajes, y el valor noLocal es falso. La aplicación utiliza una suscripción persistente, y debe recibir todos los mensajes publicados sobre el tema, incluidos los mensajes publicados cuando no hay usuarios activos asociados a ella. El proveedor de JMS mantiene un registro de esta suscripción persistente y se asegura de que todos los mensajes del editor en cuestión se conserven hasta que sean entregados al consumidor y confirmados por esa suscripción persistente hasta que hayan expirado.
Las suscripciones persistentes continúan acumulando mensajes hasta que se eliminan usando el método de baja de suscripción.
Este método solo puede usarse con suscripciones persistentes no compartidas. Cualquier suscripción persistente creada con este método no será compartida. Esto significa que solo puede existir un consumidor activo (es decir, no cerrado) en la suscripción a la vez. El término "consumidor" aquí denota el objeto TopicSubscriber, MessageConsumer o JMSConsumer en cualquier cliente.
Una suscripción persistente no compartida se identifica mediante un nombre especificado por el cliente y un identificador de cliente que debe establecerse. Las aplicaciones que luego quieren crear consumidores con una suscripción persistente no compartida deben usar el mismo identificador de cliente.
Si ya existe una suscripción persistente no compartida con el mismo nombre e identificador de cliente, y el mismo tema, selector de mensajes y valor noLocal ya están especificados, y ningún consumidor está activo (es decir, no cerrado) en la suscripción persistente, este método crea una suscripción duradera existente en MessageConsumer.
Si ya existe una suscripción persistente no compartida con el mismo nombre e identificador de cliente, y hay un consumidor en la suscripción persistente que ya está activo (es decir, no cerrado), se lanzará una JMSException.
Si ya existe una suscripción persistente no compartida con el mismo nombre e identificador de cliente pero con un asunto diferente, se ha especificado un selector de mensajes o un valor noLocal, y ningún consumidor está activo (es decir, no cerrado) en la suscripción persistente, esto equivale a cancelar la suscripción anterior y crear una nueva.
Las suscripciones persistentes compartidas y no compartidas pueden no tener el mismo nombre ni la misma identidad de cliente. Si ya existe una suscripción persistente compartida con el mismo nombre e identificador de cliente, se lanza una JMSException.
No hay límite para suscripciones persistentes y suscripciones no persistentes compartidas con el mismo nombre y clientId. Dicha suscripción será completamente separada.
Este método es el mismo que el método createDurableSubscriber correspondiente, excepto que devuelve un MessageConsumer en lugar de un TopicSubscriber para representar al consumidor.
Parámetro: Temas - Suscripciones no temporales a temas nombre - El nombre utilizado para identificar esta suscripción Lanzamiento: InvalidDestinationException - Si se especifica un tema inválido. IllegalStateException - Si el identificador de invitado no está configurado JMSException - Si la sesión no logra crear una suscripción persistente no compartida y MessageConsumer debido a algún error interno Si ya existe una suscripción persistente no compartida con el mismo nombre y identificador de cliente, y el consumidor ya está activo Si ya existe una suscripción persistente compartida con el mismo nombre e identificador de cliente Porque: JMS 2.0 IMessageConsumer CreateDurableConsumer (ITopic destino, nombre de cadena, selector de cadena, bool noLocal);
donde Selector de mensaje es el selector de mensajes; La bandera noLocal es falsa por defecto y, cuando se configura como verdadera, restringe a los consumidores de recibir solo mensajes publicados por la misma conexión que ellos, lo cual solo es aplicable a temas, no a colas. El nombre es la identidad única del tema de suscripción, y este parámetro debe establecerse cuando te suscribes a una suscripción persistente.
Activemq .net necesita referencia para descargar paquetes:El inicio de sesión del hipervínculo es visible.
Descarga del código fuente completo:
Turistas, si queréis ver el contenido oculto de esta publicación, por favor Respuesta
|