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
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
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.
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
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!
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
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…
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 - 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
amigos o que seria legal de monitorar do mqseries?