Porque o projeto precisa que alguns dados sejam enviados e recebidos, já que a quantidade de dados é relativamente grande, cerca de 3 milhões de dados por dia
No começo, usei o post http para enviar dados, mas achei que era muito lento, e a velocidade de envio era muito menor que a de recepção.
Portanto, se você quiser usar uma conexão de socket longa para enviar e receber dados, escrever o servidor socket e o cliente você mesmo, uma é perda de tempo, mas pode não ser bem feito
Por fim, o activemq é usado para enviar e receber dados
Primeiro, o código do produtor é o seguinte:
No consumidor, existem dois modelos:
1: Assinatura comum, sem necessidade de "assinatura" persistente, ou seja, ao conectar, você pode receber mensagens, e não pode receber mensagens antes de conectar, usando o "CreateConsumer" 2: Assinatura persistente, após a conexão, você pode receber dados que não foram enviados antes, usando o "CreateDurableConsumer"
Links para a introdução do CreateDurableConsumer:O login do hiperlink está visível.
Crie uma assinatura persistente não compartilhada no tópico especificado, caso ainda não exista, e crie um consumidor nessa assinatura persistente. Esse método cria uma assinatura persistente sem usar um seletor de mensagens, e o valor noLocal é falso. O aplicativo utiliza uma assinatura persistente, e precisa receber todas as mensagens publicadas sobre o tema, incluindo as publicadas quando não há consumidores ativos associados a ele. O provedor JMS mantém um registro dessa assinatura persistente e garante que todas as mensagens do editor em questão sejam mantidas até que sejam entregues ao consumidor e confirmadas por essa assinatura persistente até que expirem.
Assinaturas persistentes continuam acumulando mensagens até serem excluídas usando o método de cancelamento de inscrição.
Esse método só pode ser usado com assinaturas persistentes não compartilhadas. Quaisquer assinaturas persistentes criadas usando esse método serão não compartilhadas. Isso significa que apenas um consumidor ativo (ou seja, não fechado) pode existir na assinatura por vez. O termo "consumidor" aqui denota o objeto TopicSubscriber, MessageConsumer ou JMSConsumer em qualquer cliente.
Uma assinatura persistente não compartilhada é identificada por um nome especificado pelo cliente e um identificador de cliente que deve ser definido. Aplicativos que desejam criar consumidores em uma assinatura persistente não compartilhada devem usar o mesmo identificador de cliente.
Se uma assinatura persistente não compartilhada com o mesmo nome e identificador de cliente já existir, e o mesmo tópico, seletor de mensagens e valor noLocal já forem especificados, e nenhum consumidor estiver ativo (ou seja, não fechado) na assinatura persistente, esse método cria uma assinatura duradoura existente no MessageConsumer.
Se já existir uma assinatura persistente não compartilhada com o mesmo nome e identificador de cliente, e houver um consumidor na assinatura persistente que já está ativo (ou seja, não fechado), um JMSException será lançado.
Se já existe uma assinatura persistente não compartilhada com o mesmo nome e identificador de cliente, mas com um assunto diferente, um seletor de mensagens ou valor noLocal foi especificado, e nenhum consumidor está ativo (ou seja, não fechado) na assinatura persistente, isso equivale a cancelar a antiga e criar uma nova.
Assinaturas persistentes compartilhadas e não compartilhadas podem não ter o mesmo nome e identidade do cliente. Se uma assinatura persistente compartilhada com o mesmo nome e identificador de cliente já existir, um JMSException é lançado.
Não há limite para assinaturas persistentes e assinaturas compartilhadas não persistentes com o mesmo nome e clientId. Essa assinatura será completamente separada.
Esse método é o mesmo do método createDurableSubscriber correspondente, exceto que retorna um MessageConsumer em vez de um TopicSubscriber para representar o consumidor.
Parâmetro: Temas - Assinaturas de tópicos não temporários nome - O nome usado para identificar essa assinatura Arremesso: InvalidDestinationException - Se um tópico inválido for especificado. IllegalStateException - Se o identificador de convidado não estiver definido JMSException - Se a sessão falhar em criar uma assinatura persistente não compartilhada e o MessageConsumer devido a algum erro interno Se já existir uma assinatura persistente não compartilhada com o mesmo nome e identificador de cliente, e o consumidor já estiver ativo Se já existir uma assinatura persistente compartilhada com o mesmo nome e identificador de cliente Já que: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destination, nome da string, seletor de string, bool noLocal);
onde messageSelector é o seletor de mensagens; A flag noLocal é falsa por padrão e, quando definida como verdadeira, restringe os consumidores de receberem apenas mensagens publicadas pela mesma conexão que eles, o que se aplica apenas a tópicos, não filas. O nome é a identidade única do tópico da assinatura, e esse parâmetro precisa ser definido quando você assina uma assinatura persistente.
O Activemq .net precisa consultar o download do pacote:O login do hiperlink está visível.
Download completo do código-fonte:
Turistas, se quiserem ver o conteúdo oculto deste post, por favor Resposta
|