Pergunta

Mensagens soluções de middleware (JMS, Tibco, etc.) permitem publicar / assinar com "tópico" filtrando usando wildcards para inscrever-se a todas as mensagens de um "tópico" certo, por exemplo, Assine ( "CONTA. *") Tópico permite que você se inscrever em ambos mensagem "ACCOUNT.WITHDRAW" mensagem e "ACCOUNT.CHECKBALANCE".

O problema é que tal subscrição também recebe as minhas próprias mensagens publicadas.

Eu estou procurando um mecanismo, semelhante a, digamos, UDP multicast de auto-retorno, que pode ser ligado ou desligado pela camada de transporte sem mexer com os dados enviados.

Existe um comum, declarativa (sem código personalizado, única configuração) maneira de configurar o middleware não receber mensagens que essa mesma instância do serviço já publicados? Idealmente, isso também deve ser capaz de filtrar tudo publicado por todos os servidores (nós) do mesmo "tipo".

Agradecemos antecipadamente.

Foi útil?

Solução

Ninguém está respondendo, então eu vou gritei (de forma mão-wavey).

Eu acredito que não há nada no JMS especificação em torno de controlar se você receber suas próprias mensagens enviadas de volta em um receptor tópico. Assim, qualquer capacidade como esta seria uma característica fornecedor não-portátil. Especialmente para o seu segundo requisito (baseada no "tipo" de cliente JMS contra algum controle com base na mesma conexão fazendo o envio / recebimento).

Se você não tem a flexibilidade para modificar código ou conteúdo de mensagem (propriedades), acho que não tenho soluções portáteis. E provavelmente nenhuma solução para esse segundo "tipo" exigência.

Se você quiser investigar opções específicas do fornecedor, você precisa nos dizer qual fornecedor você está em interessado. Você pode obter nada, mas não há nenhuma maneira de saber sem perguntar.

Outras dicas

O JMS API contém esta opção para TopicSubscribers, por exemplo, TIBCO EMS vamos criar um consumidor com a propriedade "noLocal". Isso significa que há mensagens publicadas pela mesma conexão, se consumido pelos clientes na mesma conexão.

por exemplo. dê uma olhada aqui como criar um assinante tema com a opção "noLocal": https://docs.tibco.com/pub/enterprise_message_service/7.0.1-march-2013/doc/html/tib_ems_api_reference/api/javadoc/javax/jms/TopicSession.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top