Por padrão, um intermediário descarta uma publicação depois de enviar essa publicação a todos os assinantes interessados. Contudo, um publicador pode especificar que ele deseja que o intermediário mantenha uma cópia de uma publicação, a qual é então denominada uma publicação retida.
Uma cópia de uma publicação retida é enviada pelo intermediário a todos os assinantes que registrem um interesse no tópico da publicação. Isso significa que um novo assinante não precisa aguardar que as informações sejam publicadas novamente para recebê-las.
Por exemplo, um assinante que registra uma assinatura para um preço de ação receberá o preço publicado mais recentemente imediatamente, sem ter que esperar que o preço da ação seja alterado e publicado novamente.
Se RetainPub for especificado como uma opção de publicação na mensagem Publish, a publicação será retida pelo intermediário e substituirá qualquer publicação retida anteriormente para aquele tópico.
Como o intermediário retém somente uma publicação para cada tópico e ponto de assinatura, a publicação antiga é excluída quando uma nova publicação chega.
Quando decidir se deve utilizar publicações retidas, considere os fatores a seguir.
Em geral, as informações sobre eventos não são retidas, mas as informações sobre estado são retidas. Contudo, se todas as assinaturas de um tópico estiverem ativas antes que seja feita qualquer publicação sobre esse tópico, e se não for esperada nenhuma assinatura nova, não haverá necessidade de reter publicações, mesmo para informações sobre estado, porque as publicações serão entregues a todos os assinantes assim que forem publicadas.
Publicações de informações sobre estado também não precisam ser retidas se forem publicadas com muita freqüência (por exemplo, a cada segundo). Com esta freqüência de publicação, qualquer novo assinante (ou um assinante que recupera de uma falha) recebe o estado atual quase imediatamente após assinar.
Se você utilizar publicações retidas, os assinantes poderão registrar-se utilizando a opção PubOnReqOnly da mensagem Register Subscriber. Isso significa que o intermediário enviará publicações a um assinante somente quando esse assinante pedir uma atualização. O intermediário envia para o assinante a publicação atual retida que corresponde à assinatura.
Isto não é recomendado. Se você tiver uma publicação retida e, em seguida, uma publicação não retida sobre o mesmo tópico for publicada, a publicação retida existente ainda ficará retida. Ela não será atualizada pela publicação não retida. Se um assinante se registrar utilizando a opção PubOnReqOnly da mensagem Register Subscriber, ele não poderá acessar nenhuma publicação não retida.O intermediário enviará somente a publicação retida atual em resposta a um pedido de atualização.
Recomenda-se não ter mais de um aplicativo publicando publicações retidas sobre o mesmo tópico. Se isso acontecer, e as publicações forem quase simultâneas, não é possível determinar qual das publicações será retida. Se os publicadores utilizarem intermediários diferentes, poderão ser mantidas publicações retidas diferentes sobre o mesmo tópico em cada intermediário.
Se o assinante não utilizar publicações retidas, o aplicativo assinante pode ter que armazenar seu estado atual localmente. Se o publicador utilizar publicações retidas, o assinante poderá solicitar uma atualização para atualizar suas informações de estado após iniciar novamente.
O intermediário continua a enviar publicações para um assinante registrado, mesmo se este assinante não estiver sendo executado. Isso pode levar a um acúmulo de mensagens na fila do assinante. Esse acúmulo pode ser evitado se o assinante se registrar com a opção PubOnReqOnly da mensagem Register Subscriber.O assinante deve, então, atualizar seu estado periodicamente, solicitando uma atualização ou utilizando uma fila dinâmica temporária.
O intermediário precisa armazenar publicações retidas em um banco de dados. Isso reduz o rendimento do processamento. Se as publicações foram muito grandes, uma quantidade considerável de espaço em disco será necessária para armazenar a publicação retida de cada tópico. Em um ambiente de vários intermediários, publicações retidas são armazenadas por todos os outros intermediários conectados que possuem uma assinatura correspondente.
Utilize o campo Expiry do descritor de mensagem (MQMD) para definir um intervalo de expiração para uma publicação retida.
Os aplicativos de verificação de amostra que são fornecidos com o incluem o serviço Soccer Results.Essa amostra utiliza publicações retidas para registrar o placar mais recente em cada jogo de futebol que ela estiver monitorando. O código da amostra ilustra a programação necessária para suportar essa opção.
MQ | MQe | SCADA | JMS/IP | |
---|---|---|---|---|
Retida | SIM | SIM | SIM | NÃO |
Data de Expiração | SIM | SIM | NÃO | NÃO |
As colunas da tabela indicam a que tipo de aplicativo as linhas se referem. A primeira linha indica se uma publicação pode ser uma publicação retida e a segunda linha indica se uma data de expiração pode ser aplicada à publicação.
Conceitos relacionados
Publicações
Assinaturas
Tarefas relacionadas
Publicando
Assinando
Cancelando o Registro de uma Assinatura
Referências relacionadas
Mensagem de Publicação
Mensagem Register Subscriber
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
aq13030_ |