Pergunta

Eu tenho grãos impulsionada 2 Mensagem. Especificações de Ativação 2 para estes feijões. I têm um barramento de mensagens e ambas as características de activação está configurado para este autocarro. I ter 2 filas diferentes e uma fábrica de conexão de filas configurado para que um barramento de mensagens.

Agora, eu iria escrever meu código para enviar uma mensagem para uma das filas em tempo de execução após a determinação da fila. No entanto, ambos os meus MDBs receber a mesma mensagem. Como é que esta configuração feito em geral? Eu sempre configure uma fila -> 1 Queue Connection Factory -> 1 Message Bus -> 1 MDB? É tudo uma relação one-to-one?

Oh, eu esqueci de mencionar o seguinte: eu estou usando o Websphere Application Server v6.1

Foi útil?

Solução

Em geral, o conceito é que:

  1. uma mensagem é enviada (Fila) / publicada (Topic) para um destino (Fila / Tópico)
  2. ActivationSpec ouve mensagens em um destintation particular (Fila / Topic)
  3. ActivationSpec: Destination é uma relação 1: 1
  4. Um feijão (MDB que é um consumidor) está configurado para ouvir um ActivationSpec.

O que isto significa é que, na verdade o feijão está ligada a um destino com uma camada de engano fornecido pelo ActivationSpec.

Onde é que o ônibus vêm em - SIBus é a infra-estrutura de mensagens que torna tudo isso possível. Destinos são hospedados no ônibus.

Chegando à pergunta - o ActivationSpec seria configurado para ouvir um destino no ônibus para o qual as mensagens serão enviadas. A fábrica de conexão decide o ônibus para que mensagem seria enviada. Enquanto o nome do destino é único e direcionados a uma fila específica (JMS Queue está ligado ao destino no ônibus) mensagem só seria recebido por um ActivationSpec.

quantos destinos (sob ligação SIBus no WAS console de administração) foram criados no ônibus? você pode verificar / validar se a configuração está correta?

para responder suas perguntas - "É um ônibus por especificação de ativação e uma fábrica de conexão de filas por fila." -. A resposta é NÃO

  1. Bus é a infra-estrutura subjacente que pode hospedar "n" destinos. Um ActivationSpec ouve um destino.
  2. Com fábrica de conexão de filas é uma fábrica (padrão de fábrica J2EE) para a criação de filas.

Outras dicas

Eu acho que você está dizendo que quer ambos os MDBs para receber a mesma mensagem, certo?

Se este for o caso, então os MDBs deve estar a ouvir um tema não um fila .

Como alternativa, existem maneiras que você pode configurar IBM MQ para encaminhar mensagens, assim, por exemplo uma mensagem postada para um determinado fila pode ser re-lançado para n outros < em> filas , mas eu só vi que usado quando algum tipo de enriquecimento mensagem ocorre antes do re-lançamento e então eu suspeito que seria um exagero para o que você está tentando alcançar.

Por que você precisa do ônibus mensagem?

Normalmente eu associar um MDB com uma fila - é uma relação de 1: 1. Enviar uma mensagem para uma fila, o ouvinte recebe-lo. O que é o ônibus de comprar você?

Eu fiz JMS com WebLogic, e não há tal construção como um barramento de mensagens necessário. Eu acho que é uma coisa IBM.

Eis um exemplo de como fazer JMS com a Primavera. É assim que eu recomendo processo.

UPDATE: Eu mal interpretada a sua pergunta. Quando você disse que ambas as filas estavam recebendo a mesma mensagem, eu não acho que foi o comportamento desejado. Se for, então tópicos são a maneira correta de ir. As filas são ponto-a-ponto de mensagens; tópicos são publish / subscribe.

Eu suspeito que a configuração que você tem não está configurado da maneira que você pensa que é. Nós usamos a mesma configuração de seu descrita, com muitas MDB de (com uma fila e ativação especificação), uma única fábrica e ônibus mensagem e tudo funciona como esperado.

Para obter o comportamento que você está vendo não é realmente possível a menos que você quer enviar a mesma mensagem para ambas as filas, ou que tenham definido um tópico em vez de uma fila. Tenho a certeza que, mesmo se ambos do MDB está lendo a partir da mesma fila, apenas um vai receber a mensagem, uma vez que uma fila só suporta ponto de mensagens ponto. O que você descreveu é um comportamento baseado tópico.

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