Vous êtes sur la page 1sur 12

PRACTICAS PUBLIC / SUBSCRIBE MQ 7

/////////////////////////////////////////
///////////PRACTICA 1///////////////////
//////CREANDO TOPICOS/////////////////////
////////////////////////////////////////
//Aqui creamos nuestro QM
//a nivel de consola
crtmqm QM_PUB_SUB
strmqm QM_PUB_SUB
*****************************
*Iniciamos los comandos mqsc
runmqsc QM_PUB_SUB
*Aqu creamos nuestros tpicos
DEFINE TOPIC(COMIDA) TOPICSTR('comida')
DEFINE TOPIC(COMIDA.CARNE) TOPICSTR('comida/carne')
DEFINE TOPIC(COMIDA.FRUTA) TOPICSTR('comida/fruta')
DEFINE TOPIC(COMIDA.VERDURA) TOPICSTR('comida/verdura')
DEFINE TOPIC(COMIDA.PASTA) TOPICSTR('comida/pasta')
DEFINE TOPIC(COMIDA.CARNE.RES) TOPICSTR('comida/carne/res')
DEFINE TOPIC(COMIDA.CARNE.PESCADO) TOPICSTR('comida/carne/pescado')
DEFINE TOPIC(COMIDA.CARNE.POLLO) TOPICSTR('comida/carne/pollo')
DEFINE TOPIC(COMIDA.FRUTA.MANZANA) TOPICSTR('comida/fruta/manzana')
DEFINE TOPIC(COMIDA.FRUTA.PLATANO) TOPICSTR('comida/fruta/platano')
DEFINE TOPIC(COMIDA.FRUTA.PERA) TOPICSTR('comida/fruta/pera')
*Desplegamos desde comando los tpicos que tenemos
*y que nos muestre toda su informacin
DISPLAY TPSTATUS('#')
*Cerramos el runmqsc
END
****************************
//Ahora desde el MQExplorer creamos los siguientes topicos que
//faltan para verdura y pasta
TOPICO: COMIDA.VERDURA.CHILE TOPICSTR: comida/verdura/chile
TOPICO: COMIDA.VERDURA.TOMATE TOPICSTR: comida/verdura/tomate
TOPICO: COMIDA.PASTA.LETRAS TOPICSTR: comida/pasta/letras

//Vemos nuestrs topicos en el MQExplorer


Vamos a nuestro QM y seleccionamos la carpeta de Topics, del
lado derecho veremos los tpicos que tenemos.
///Vemos la jerarqua de objetos creados en el MQExplorer
Seleciona tu Queue Manager y ve a la carpeta de topicos,
ahi das click derecho y seleccionas status. Con esto tu vas
a ver los valores reales de la propiedades actuales que tiene tus topicos
Si quieres ver la jerarqua de un tpico en particulas
selecciona el topico en especfico y da click en status.

/////////////////////////////////////////
/////////PRACTICA 2 ////////////////////
////CAMBIANDO PROPIEDADES DE TOPICOS////
**************************
*Iniciamos los comandos mqsc
runmqsc QM_PUB_SUB
*Alteramos derecho de algunos tpicos respecto
*a publicacion y subscripcion
ALTER TOPIC(COMIDA) PUB(disabled)
ALTER TOPIC(COMIDA.CARNE) PUB(disabled)
ALTER TOPIC(COMIDA.CARNE.RES) PUB(disabled)
ALTER TOPIC(COMIDA.CARNE.POLLO) PUB(enabled)
ALTER TOPIC(COMIDA.FRUTA.PERA) PUB(disabled)
ALTER TOPIC(COMIDA.FRUTA.MANZANA) SUB(disabled)
*Cerramos el runmqsc
END
****************************
//// Checa en los topicos en el explorer las propiedades que fueron
cambiadas.
//Ahora selecciona tu QM -> Topics y boton derecho status, veras
//que todas tus publicaciones estan deshabilitadas (excepto pollo)
// debido a que heredaron el valor que tenia el nodo padre COMIDA que
//es PUB(DISABLED).
//Revisa las propiedades para poder cambiar de un topico. En este
//caso desde el MQExplorer selecciona un topico dale click derecho
//propiedades y revisa sus propiedades.

**************************
*Iniciamos los comandos mqsc
runmqsc QM_PUB_SUB
*Cambiamos que comida tenga habilitado las publicaciones
*para que no se hereden
ALTER TOPIC(COMIDA) PUB(enabled)
**Podemos checar el valor de las propiedades de un topico
**desde comando, en este caso de .
DISPLAY TOPIC(COMIDA.CARNE.POLLO) ALL
*Cerramos el runmqsc
END
****************************
//Desde el MQ Explorer ve de nuevo con el status de los valores
//reales de tus topicos.
/////////////////////////////////////////
/////////PRACTICA 3 ////////////////////
////PRUEBA DE PUBLICACIN/SUBSCRIPCIN
/////////DESDE EL MQ EXPLORER//////////
//SUBSCRIPCIONES NO ADMINISTRADAS///
//Habilitamos una Subscripcin desde el MQExplorer
//(Va a ser una subscripcion autoadministrada por el
//mq explorer, es decir que el maneja las colas de
//destino)
1. Selecciona tu Queue Manager en el MQExplorer
2. Ve a su subcarpeta de Topics
3. Da click derecho seleccionas "Test Subscription"
4. En el campo Topic String = comida/carne/#
5. Aprieta el boton de Subscribe y deja la ventana abierta
(NO LA CIERRES)
6. Selecciona la carpeta Topics y de ahi Status, ve
de ahi respecto al topico COMIDA.CARNE y todos sus subtopicos
en el campo subcount deben tener el valor de 1
diciendonos que todos esos topicos entran en esa subscripcin.
7. Seleciona la carpeta de topicos y selecciona al topico
COMIDA.CARNE.POLLO, da click derecho y selecciona "Topic-Status
-Subscribe" y te dara la informacin de la subscripcin que
acabamos de hacer aplicada a este tpico.
//Habilitamos la PUBLICACIN desde el MQ Explorer

1. Selecciona tu Queue Manager en el MQExplorer


2. Ve a su subcarpeta de Topics
3. Da click derecho seleccionas "Test Publication"
4. En el campo Topic String = comida/carne/pollo
5 En el campo de Message Data coloca "Hola Mundo" y da
ENTER y coloca otro mensaje "Hola TODOS" da ENTER.
6 Ve a la ventana que tienes abierta del Subscriber
y veras que ahi se te muestran los mensajes.
7. Cierra la ventana de subscripciones y de publicaciones
del MQ Explorer.

/////////////////////////////////////////
/////////PRACTICA 4 ////////////////////
////PRUEBA DE PUBLICACIN/SUBSCRIPCIN
/////////DESDE EL MQ EXPLORER//////////
//SUBSCRIPCIONES ADMINISTRADAS////

**************************
*Iniciamos los comandos mqsc
runmqsc QM_PUB_SUB
*Creamos una cola que guardara los mensaje de nuestro
*Subscriptor
DEFINE QLOCAL(QSUB)
*Cerramos el runmqsc
END
****************************
//Creamos un Objeto de subscriptor
1. Selecciona tu Queue Manager en el MQExplorer
2. Ve a su subcarpeta de Subscriptions y con
boton derecho seleccionas "New Subscription"
3. En la ventana colocar el nombre de la subscripcin
SUB_ADM_FRUTA y das click en "Next"
4. En el campo "Topic String" colocamos el comida/fruta/#
y en el campo "Destination Name" el valor de QSUB
5. Da click en Finish
6. Selecciona tu nueva subscripcin creada y da click
derecho "Propiedades", revisa esas propiedades de
tu Subscripcin.

//Usamos el programa ejemplo "amqssub" para suscribir


1. Abre una terminal de comandos
2. Ejecutamos
cd /opt/mqm/samp/bin
3. Ejecutamos el comando
./amqssub comida/fruta/platano QM_PUB_SUB
4. Dejamos esa consola abierta
5. Durar 30 segundos abierta esa subscripcin pues es temporal.
//Usamos el programa ejemplo "amqspub" para publicar
1. Ejecutamos
cd /opt/mqm/samp/bin
2. Ejecutamos el comando
./amqspub comida/fruta/platano QM_PUB_SUB
3. colocamos un mensaje "Mensaje publicado" y damos ENTER
4. En la terminal que dejamos abierta de la subscripcin
se mostrar el mensaje que colocamos
5. Vamos en el MQExplorer y nos metemos en nuestro MQ y
en la parte de las queues veremos que nuestra cola "QSUB"
tenemos un mensaje
6. Con lo anterior apreciamos que tuvimos 2 subscriptores,
uno "administrado permanente" y uno "no administrado temporal"
7. Ve a la carpeta de las subscripciones, selecciona nuestra
subscripcin creada da click derecho "status" y desde ahi
puede ver la cantidad de mensajes que ha recibido la
subscripcin.
8. SI deseas saber en algn momento que publicadores y subscriptores
estan activos para cierto objeto de topico, selecciona ese objeto
de tpico da click derecho y escoge:
Test Publication
Test Subscription
9. Lo del punto 8 hazlo sobre nuestro tpico COMIDA.FRUTA

/////////////////////////////////////////
/////////PRACTICA 5 ////////////////////
//////MANEJANDO SEGURIDAD DESDE LOS TOPICOS////

1. Creamos un usuario llamado "mio" en un grupo llamado


"migrupo". Esto desde una consola:
groupadd migrupo
useradd -g migrupo mio
2. Creamos una cola que se llama QSUB2.
**************************

runmqsc QM_PUB_SUB
DEFINE QLOCAL(QSUB2)
END
****************************
3. Abrimos una consola y cambiamos de usuario a mio:
su mio
4. Revisamos que nuestro nuevo usuario tenga el grupo que
acabamos de decidir.
id mio
5. Nos cambiamos al directorio de los comandos ejemplo de MQ
cd /opt/mqm/samp/bin
6. Tratamos de hacer PUTS a la cola que acabamos de
crear anteriormente.
./amqsput QM_PUB_SUB QSUB2
7. Les va a salir un Reason Code 2035. Ejecutan mqrc 2035 y
les va a decir MQRC_NOT_AUTHORIZED, que indica que no tienen
derecho a conectarse.
8. General el siguiente perfil para adquirir los derechos
necesarios a nivel de grupo "migrupos para la conexin. Desde
otra consola coloca lo siguiente:
setmqaut -m QM_PUB_SUB -t qmgr -g migrupo +connect
9. Refresca la seguridad (has esto adicionalmente para cada
cambio de seguridad)
echo refresh security | runmqsc QM_PUB_SUB
10. Regresamos a nuestra consola del punto 6 y colvemos a ejecutar:
./amqsput QM_PUB_SUB QSUB2
11. Les sale el mismo codigo 2035 pero en este caso para hacer
PUT en la cola. Ejecutamos el siguiente comando para cambiar eso:
setmqaut -m QM_PUB_SUB -n QSUB2 -t q -g migrupo +put
12. Veran que ya se les permite hacer puts. Regresa a terminal
de comandos del punto 8 colocan un par de mensajes y los revisan
en el MQExplorer.
13. Ahora buscamos generar un subscriptor temporal hacia el
tpico comida/fruta/platano. Usamos:
la misma terminal del punto 8 del usuario "mio".
./amqssub comida/fruta/platano QM_PUB_SUB
14. Te da de salida el condigo 2035 de que el grupo de tu usuario
no tiene derecho a hacer subscripciones, asi que cambiamos los
siguientes derechos al objeto de "topico" que representa esos
derechos. Usa otra terminal que no sea la del usuario "mio"
setmqaut -m QM_PUB_SUB -n COMIDA.FRUTA.PLATANO -t topic -g
migrupo +pub +sub
15. Ahora vuelve a intentar en la terminal del usuario "mio"
(no cierres esta terminal)
./amqssub comida/fruta/platano QM_PUB_SUB
16. Abre otra terminal con el usuario "mio"
su mio
17.Ejecuta una subscripcion a nuestro anterior tpico y escribimos
unos mensajes:

./amqspub comida/fruta/platano QM_PUB_SUB


18. Veras que en la ventana de la subscripcin estarn los mensajes que
acabas de publicar.
19. En una consola del usuario "mio" Trata de suscribirte al topico
comida/carne/pescado.
./amqssub comida/carne/pescado QM_PUB_SUB
20. Veras que no tienes derechos para publicar en ese topico.
21. Ahora en una terminal que no sea del usuario "mio" ejecuta la
siguiente sentencia para darle derechos de Public/Subscribe a los
que manejen el topico COMIDA y seal del grupo al que pertenece mio:
setmqaut -m QM_PUB_SUB -n COMIDA -t topic -g migrupo +pub +sub
22. Ahora en una terminal del usuario "mio" ejecuta de nuevo:
./amqssub comida/carne/pescado QM_PUB_SUB
21. !Veras que ahora si tiene derecho de subscripcin debido a que
va hacia arriba de la jerarqua de objetos para buscar algun
derecho que le permita hacer la subscripcin, en este caso
"COMIDA"
22 vuelve a quitarle los derechos al tpico COMIDA:
setmqaut -m QM_PUB_SUB -n COMIDA -t topic -g migrupo -pub -sub
23 Veras que si vuelves a ejecutar la subscripcin ya no tendras
derechos:
./amqssub comida/carne/pescado QM_PUB_SUB
23. Ahora vamos a dar derechos usando el MQExplorer.
24. Ingresamos al MQExplorer seleccionamos QM_PUB_SUB -> Topics, de ahi
seleccionamos nuestro tpico COMIDA.CARNE.PESCADO, damos click derecho
Object Authorities -> Manage Authority Records -> Specific Profile ->
COMIDA.CARNE.PESCADO -> New
25 Coloca los siguientes valores para el nuevo PERFIL:
Group:
(CHECAR el Radio Button)
Entity Name: migrupo (Que es el nombre del grupo)
Publish: (CHECAR el checkbox)
Subscribe: (CHECAR el checkbox)
26. Le dan guardar y en el panel veran que "migrupo" esta agregado y
tiene
los derecho de PUBLIC/SUBSCRIBE.
27. Trata de hacer una subscripcion al topico COMIDA.CARNE.PESCADO
./amqssub comida/carne/pescado QM_PUB_SUB
28. Veras que la subscripcin es aceptada.
Nota: Adicionalmente para QM no administrados SYSTEM.DURABLE.MODEL.QUEUE
y SYSTEM.NDURABLE.MODEL.QUEUE

/////////////////////////////////////////
/////////PRACTICA 6 ////////////////////
//////PUB/SUB desde MQI////

1. Ve a la carpeta de /opt/mqm/samp
cd /opt/mqm/samp
2. Abre el archivo amqssuba.c que es para hacer una subscripcion
(no durable)
y revisa el cdigo, esta escrito en c.
3. Abre el archivo amqspuba.c que es para hacer una publicacion
manejada por (String) y revisa el cdigo, esta escrito en c.
4. Si lo deseas puedes revisar los cdigos de COBOL para
publicacin (amq0pub0.cbl) y subscripcin (amq0sub0.cbl).
5. Ahora vamos a ejecutar PUBLIC/SUBSCRIBE pero mediante java
usanso el ECLIPSE.
6. Primero abriremos el eclipse. Ejecuta las 2 siguientes
instrucciones:
cd /root/eclipse
./eclipse
6.1. Nos va a pedir que escogamos un Workspace coloquemos:
/root/workspace_mqi
7. Dentro del eclipse vamos a crear un projecto. En el menu
selecciona:
File -> New -> Project -> Java -> Java Project ->
Next
8. Dentro de la ventana que se te aparece colocas:
Project Name: PUB_SUB
9. Das NExt
10. En la ventana que te aparece se te ofrece si deseas agregar
alguna librera. En nuestro caso si lo deseamos asi que
seleccionamos la pestana "Libraries".
11. Seleccionamos el botn "Add External JARs"
12. Buscamos la siguiente ruta:
/opt/mqm/java/lib
13. Seleccionamos los JARs que necesitamos:
com.ibm.mq.jar
14. Con esto veremos que la librera ya esta agregada y damos
click a "Finish".
15. Veras que ya tienes creado tu projecto de JAVA.
16. En la carpeta /root/CODES tenemos los cdigos de java para
publicacin y subscripcin. En este caso los 2 son temporales.
Los archivos son:
Publicador.java: Publicara un mensaje al tpico
COMIDA.FRUTA.PLATANO
Subscriptor.java: Hace una subzcripcin temporal y

auto-administrada al tpico COMIDA.FRUTA.PLATANO.


17. Ahora vamos a importtar estos archivos a nuestro projecto.
18.Seleccionamos nuestro projecto PUB_SUB, damos click derecho
y seleccionamos "Import"
19 Escogemos General -> File System.
20. Nos aparece una ventana y en su campo "From Directory"
buscamos a /root/CODES.
21. En el panel izquierdo de abajo damos click en el checkbox
que dice "CODES", checa que del panel derecho esten seleccionados nuestros cdigos.
22. En el campo "Into Folder" damos click en browse y
seleccionamos PUB_SUB -> src dando click en OK.
23. Ya en la ventana principal de "Import" damos click a
"Finish".
24. Ya en la ventana principal del ECLIPSE veras que al dar
click en el projecto PUB_SUB -> src -> (Default Package)
ahi estarn nuestros 2 cdigos.
25. En PUB_SUB -> src -> (Default Package) dale click al
cdigo Subscriptor.java y revisa el cdigo del mismo.
26. En PUB_SUB -> src -> (Default Package) dale click al
cdigo Publicador.java y revisa el cdigo del mismo.
27. Antes ejecutar los cdigos nos falta crear un Canal
Servidor en nuestro Queue Manager adems de un listener
para definir la conexin con la aplicacin cliente.
Ejecuta lo siguiente en la consola:
runmqsc QM_PUB_SUB
DEFINE CHANNEL(SERVER) CHLTYPE(SVRCONN) TRPTYPE(TCP)
DEFINE LISTENER(LISTENER) +
TRPTYPE(TCP) PORT(9000) +
CONTROL(QMGR)
START LISTENER (LISTENER)
END
28. Ahora ejecuta la clase del Subscriptor regresando al ECLIPSE,
seleccionamos la pestaa de la clase "Subscriptor" y la ejecutamos
dando click en el botn "Run" que tiene un simbolo de una flecha
blanca dentro de un circulo rojo.
29. En la ventana inferior de "Console" nos aparece un mensaje que
dice "Esperando al Publicador". (Tenemos 30 segundos para lanzar al
Publicador)
30. Ejecutamos a la clase Publicador y saldra un mensaje "Mensaje
Publicado" e inmendiatamente despus se regresa a la ventana de la
consola del subscriptor mostrandonos el mensaje:
TEXTO PUBLICADO: Mensaje publicado (numero aleatorio)
31. COn el anterior mensaje sabemos que el subscriptor tomo el
mensaje publicado.

/////////////////////////////////////////
/////////PRACTICA 7 ////////////////////
//////Mensajeo Asincrono////

1. Ve a la carpeta de /opt/mqm/samp
cd /opt/mqm/samp
2. Abre el archivo amqscbf0.c que hace uso de MQCB y MQCTL para
consumir los mensajes de diferentes colas asincronamente.
Tiene los siguientes pasos:
1- MQOPEN de la cola para INPUT
2- MQCB Registra una funcin para recibir mensajes
3- MQCTL Inicia el consumo de mensajes
4- ESPERA mensajes hasta a que el usuario de enter en
la consola (el usuario debe estar dando MQPUTS en
las colas que son parte del MQCB)
5- MQCTL Se detiene el consumo de mensajes
6- Se cierra la cola de donde se consumen los mensajes
3. Definimos 3 colas en nuestro QM
runmqsc QM_PUB_SUB
DEFINE QLOCAL(COLA1)
DEFINE QLOCAL(COLA2)
DEFINE QLOCAL(COLA3)
END
4. Ejecutamos
cd /opt/mqm/samp/bin
5. Ejecutamos el siguiente comando para manejar el mensajeo
asincrono sobre nuestras 3 colas.
./amqscbf COLA1 COLA2 COLA3 -m QM_PUB_SUB
6. El programa se va a quedar esperando los puts que hagamos
en esas colas y el contenido lo va a imprimir ahi. Deja esa
consola abierta.
7. Abre una nueva consola y haces PUTS a las 3 diferente
colas con los siguientes comandos (colocando 2 mensaje en
cada una)
cd /opt/mqm/samp/bin
./amqsput COLA1 QM_PUB_SUB
./amqsput COLA2 QM_PUB_SUB
./amqsput COLA3 QM_PUB_SUB
8. Veras que los mensajes te apareceran en nuestra consola del
Call BAck.

9.Da click en la consola del Call Back para que se salga.

/////////////////////////////////////////
/////////PRACTICA 8 ////////////////////
//////Temas Adicionales PUB/SUB////

1. Nosotros podemos tener colas alias que apunten a topicos.


Un ejemplo sera el siguiente.
runmqsc QM_PUB_SUB
DEFINE QA(TOPICO_ALIAS) TARGTYPE(TOPIC) TARGET
(COMIDA.CARNE.POLLO)
END
2. Puedes checar que apunta a un tpico, desplegando sus
propiedades:
runmqsc QM_PUB_SUB
DISPLAY QA(TOPICO_ALIAS)
END
3. Asi ya puedes usar este alias como si fuera el tpico, si tu
deseas hacer publicaciones solo tienes que hacerle PUTS a
esta cola ALIAS.
3.1. En tu MQ Explorer selecciona QM_PUB_SUB -> Topics
1- Da click derecho y selecciona "Test Subscription"
2- En la ventana que aparece coloca Topic String=
comida/carne/pollo y da click en Subscribe, deja esa
ventana abierta.
3.2 Ve a la consola de comandos y coloca mensajes en tu cola
alias:
cd /opt/mqm/samp/bin
./amqsput TOPICO_ALIAS QM_PUB_SUB
3.3 Regresa a tu MQExplorer y veras que en tus ventana que
abriste para suscribir te muestra los mensajes que colocaste en
la cola alias.
4. Ahora vamos a ver el uso de SETS (Grupos de QM)
5. Crea un QM llamado "QM_ALTERNATIVO" y lo iniciamos. En una
consola ejecuta
crtmqm QM_ALTERNATIVO
strmqm QM_ALTERNATIVO
6. VE al MQExplorer, selecciona:
QueueManagers-> Sets -> New Set
7. Te abre una ventana y colocas:
Name= MI_SET
Type= Manual
8. Damos click en next

9. Seleccionas nuestros 2 Queue Managers que tenemos y das click en


Finish.
10. Al SET lo debes de ver ya en el arbol de objetos de MQ bajo
Queue Managers.
11. Selecciona el SET QM_ALTERNATIVOS y pon "Stop Local Queue Managers"
para detener todos los Queue Managers que son parte del SET. Indicas
que sea inmediato.
12. Para iniciarlos de nuevo usa "Start Local Queue Managers"
13. NOTA: Si en algn momento lo deseamos podemos hacer un set de la
forma "Automatica" para establecerles filtros como por nombre. Para ello
tendras que seleccionar en el MQExplorer:
QueueManagers-> Sets -> New Set -> (indicar el nombre de SET y
que sea automticos y darle next) -> Manage Filter -> Add
14. Nota: Nosotros podemos seleccionar que cuando generamos un canal
servidor
podamos seleccionar el mximo numero de instancias de conexin y
el maximo numero de estas por aplicacin.
15. Dentro del canal que ya tenamos definido llamado SERVER, en
el MQExplorer da click derecho y selecciona "Properties".
16. Selecciona la seccin de "Extended"
17. De ahi cambia a:
Maximum Instance = 1
Maximum Instance per Client = 1
18. EN ese caso con lo que pusimos indicamos que solo una conexin
(instancia) este canal puede manejar.
19. Vuelve a abrir tu ECLIPSE
cd /root/eclipse
./eclipse
20. Ejecuta tu ejemplo de la subscripcin veras que todo esta bien y
te dara el mensaje "Esperando Publicador".
21. Inmediatamente despus ejecuta al Publicador y veras que te
lanza un error 2059.
22. En la consola de comandos ejecuta:
mqrc 2059
23. Te dar el mensaje MQRC_Q_MGR_NOT_AVAILABLE indicando que no
hay conexiones disponibles.
24. Espera unos 30 segundos vuelve a ejecutar al Publicador y veras
que te da el mensaje "Mensaje Publicado", esto se debe a que el
Subscriptor ya esta dada de baja y ya no esta ocupando la conexin.
****************************

Vous aimerez peut-être aussi