Acesso ao MQ Series!

6 respostas
A

Olá galera,

gostaria de saber como acessar o mqseries através de uma aplicação java. Sei que tenho que utilizar a API jms e utilizar JDNI. Porém será que alguém poderia me postar um exemplo ou alguma coisa mais clara?....

Obrigado

6 Respostas

I

existe um dir no pack de distribuição do MQ de exemplos, tanto como um provider JMS “puro”, como usando as classes proprietárias da ibm.

Recomendo o manual “MqSeries using java” que explica bem como usar.

O único problema que eu me lembro, (pelo menos até a versão 5.2 – mas acho a 5.3 ainda é assim) é que caso vc queira usar transação XA com ele, o cliente deve estar na mesma máquina física que o MqServer (por que ele usa JNI com algumas DLL/SO do Mq server), o chamado modo “bind” no lingo do mq.

Qq coisa grita. :slight_smile:

http://www-306.ibm.com/software/integration/mqfamily/library/manuals99/csqzaw/csqzaw.htm


http://www14.software.ibm.com/webapp/download/product.jsp?s=p&id=TDUN-49EVER

A

Cara, muito obrigado, valeu mesmo!
Só uma dúvida que ainda não consegui achar na documentação. Como eu faço para recuperar as filas já existentes quando me conecto em uma QueueManager? Tenho o MQ Series instalado na minha máquina, preciso instalar o provider ou já posso acessar direto pela aplicação? …

Valeu companheiro!

I

Para emitir comandos/queries contra o mq vc precisa usar o pcf (Programmable command formats) que basicamente é um pacote proprietário da ibm (com.ibm.mq.pcf.*), claro que não adianta nada se o PCF não está habilitado/suportado no servidor (versões velhas não possuem isso - eu acho)

O manual que explica o pcf é o “Programming Interfaces Reference Summary”.

Existe um outro processo chamado de MQAI (Admin interface) que talvez tb faça isso, mas esse eu nunca usei, nem sei se é apenas uma camada de abstração sobre o pcf…

links:
MS0B: WebSphere MQ Java classes for PCF
http://www-1.ibm.com/support/docview.wss?rs=203&uid=swg24000668&loc=en_US&cs=utf-8&lang=en

WebSphere MQ Sample MQI code.
http://www.capitalware.biz/mq_code_java.html

WebSphere MQ sample code

MD06: MQSeries Information Center
http://www-306.ibm.com/software/integration/support/supportpacs/individual/md06.html

A

Amigo, vc me ajudou demais… desculpe abusar, mas preciso tirar outra dúvida… Desculpe se as vezes a dúvida parece meio idiota, mas é que não possuo muito conhecimento do MQ Series…

O método que estou querendo utilizar é PCFAgent(java.lang.String host, int port, java.lang.String channel) … A aplicação não está na mesma máquina do Server, está acessando como client …Funciona do mesmo jeito? O parâmetro host uso “10.10.5.556” ou “SCCSTN/TCP/10.10.5.556”? e o que passo no parâmetro channel?

Valeu mais uma vez…

I

No host basta o nome da máquina (a ser resolvido via DNS) ou o ip direto.
Na teoria, se o server tem pcf habilitado/existente (ou seja, nada de Z/OS ou OS/390 - eu acho) deve funcionar. O param “channel” deve ser o nome do seu “server channel”. Ele faz o papel de conectar um listener (tcp, lu6.2, etc) com o queue manager ao qual o canal está ligado. Esta parte do Mq é meio chata mesmo :slight_smile: - Se eu não me engano, vc deve definir um Queue Manager (ex: “QM”) e depois configurar um Listener para este MQ (TCP, default porta 1414) e um Server Channel (SVRCONN, transport type: TCP). Todos estes params vc pode configurar pela linha de comando ou, no windows, pelos 2 snap-ins mmc, um configura o listener e o outro os queue managers, queues e channels. Na base do prompt seria: :twisted:

crtmqm -q queue.manager.1 #cria o seu queue manager
strmqm #inicia o queue manager
runmqsc #inicia o mq series command, e nele…
DEFINE QLOCAL(QUEUE1) #cria uma fila queue1
DEFINE CHANNEL(CHANNEL1) CHLTYPE(SVRCONN) TRPTYPE(TCP) MCAUSER(’ ') #cria o server channel
end #encerra o mq series command
RUNMQLSR -t tcp -m queue.manager.1 #roda um listener contra o seu queue manager

ps- Caso vc tenha problemas para conectar (contra um mq server rodando no windows), sendo apenas para desenvolvimento na definição do MCAUSER ponha a conta do administrador local da máquina.

ps/2- se vc se estiver se matando com o pcf, olhe o mqai 8)

ps3- de uma olhada no manual “Quick Beginnings”


talvez te ajude a entender a relação host-channel-transport/listener

Hashtable MqEnv = new Hashtable();

MqEnv.put(MQC.CHANNEL_PROPERTY, channelName);

MqEnv.put(MQC.HOST_NAME_PROPERTY,  hostname);

MqEnv.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);

MQQueueManager qMgr = new MQQueueManager(qManagerName, qEnv);

MQQueue putQueue = qMgr.accessQueue(QueueName, MQC.MQOO_OUTPUT,                                     null, // default q manager

null, // no dynamic q name

null); // no alternate user id
S

amigos o que seria legal de monitorar do mqseries?

Criado 26 de julho de 2005
Ultima resposta 17 de mar. de 2009
Respostas 6
Participantes 3