PRACTICAS PUBLIC / SUBSCRIBE MQ 7 //////////////// //////////////////////////////// ///////////////////////// ///////// ///////////PRACTICA ///////////PRACTICA 1/////////////////// 1/////////////////// //////CREANDO TOPICOS///////////// 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 tópicos D!I" #$PI%&%$MIDA' #$PI%S#(&)comida)' D!I" #$PI%&%$MIDA%A("' #$PI%S#(&)comida/carne)' D!I" #$PI%&%$MIDA!(U#A' #$PI%&%$MIDA!(U#A' #$PI%S#(&)comida/+ruta)' D!I" #$PI%&%$MIDA,(DU(A' #$PI%S#(&)comida/verdura)' D!I" #$PI%&%$MIDAPAS# #$PI%&%$MIDAPAS#A' A' #$PI%S#(&)comida/pasta)' D!I" #$PI%&%$MIDA%A("(S' #$PI%S#(&)comida/carne/res)' D!I" #$PI%&%$MIDA%A("PS%AD$' #$PI%S#(&)comida/carne/pescado)' D!I" #$PI%&%$MIDA%A("P$--$' #$PI%S#(&)comida/carne/pollo)' D!I" #$PI%&%$MIDA!(U#AMA".A"A' #$PI%&%$MIDA!(U#AMA".A"A' #$PI%S#(&)comida/+ruta/manana)' D!I" #$PI%&%$MIDA!(U#AP-A #$PI%&%$MIDA!(U#AP-A# #A"$' #$PI%S#(&)comida/+ruta/platano)' D!I" #$PI%&%$MIDA!(U#AP(A' #$PI%&%$MIDA!(U#AP(A' #$PI%S#(&)comida/+ruta/pera)' *Desple0amos desde comando los tópicos que tenemos *1 que nos muestre toda su in+ormación DISP-A2 #PS#A#US&)3 #PS#A#US&)3)')' *%erramos el runmqsc "D **************************** //A4ora desde el MQ5plorer creamos los si0uientes topicos que //+altan para verdura 1 pasta #$PI%$6 %$MIDA,(DU(A%7I- #$PI%S#(6 comida/verdura/c4ile #$PI%$6 %$MIDA,(DU(A#$MA %$MIDA,(DU(A#$MA# # #$PI%S#(6 comida/verdura/tomate #$PI%$6 %$MIDAPAS# %$MIDAPAS#A-#(AS A-#(AS #$PI%S#(6 comida/pasta/letras
//,emos nuestrs topicos en el MQ5plorer ,amos a nuestro QM 1 seleccionamos la carpeta de #opics8 del lado derec4o veremos los tópicos que tenemos ///,emos la 9erarquía de o:9etos creados en el MQ5plorer Seleciona tu Queue Mana0er 1 ve a la carpeta de topicos8 a4i das clic; derec4o 1 seleccionas status %on esto tu vas a ver los valores reales de la propiedades actuales que tiene tus topicos Si quieres ver la 9erarquía de un tópico en particulas selecciona el topico en especí+ico 1 da clic; en status
///////////////////////////////////////// /////////PRACTICA 2 //////////////////// ////CAMBIANDO PROPIEDADES DE TOPICOS//// ************************** *Iniciamos los comandos mqsc runmqsc QM_PUB_SUB *Alteramos derec4o de al0unos tópicos respecto *a pu:licacion 1 su:scripcion A-#( #$PI%&%$MIDA' PUB&disa:led' A-#( #$PI%&%$MIDA%A("' PUB&disa:led' A-#( #$PI%&%$MIDA%A("(S' PUB&disa:led' A-#( #$PI%&%$MIDA%A("P$--$' PUB&ena:led' A-#( #$PI%&%$MIDA!(U#AP(A' PUB&disa:led' A-#( #$PI%&%$MIDA!(U#AMA".A"A' SUB&disa:led' *%erramos el runmqsc "D **************************** //// %4eca en los topicos en el e5plorer las propiedades que +ueron cam:iadas //A4ora selecciona tu QM <= #opics 1 :oton derec4o status8 veras //que todas tus pu:licaciones estan des4a:ilitadas &e5cepto pollo' // de:ido a que 4eredaron el valor que tenia el nodo padre %$MIDA que //es PUB&DISAB-D' //(evisa las propiedades para poder cam:iar de un topico n este //caso desde el MQ5plorer selecciona un topico dale clic; derec4o //propiedades 1 revisa sus propiedades
************************** *Iniciamos los comandos mqsc runmqsc QM_PUB_SUB *%am:iamos que comida ten0a 4a:ilitado las pu:licaciones *para que no se 4ereden A-#( #$PI%&%$MIDA' PUB&ena:led' **Podemos c4ecar el valor de las propiedades de un topico **desde comando8 en este caso de DISP-A2 #$PI%&%$MIDA%A("P$--$' A-*%erramos el runmqsc "D **************************** //Desde el MQ 5plorer ve de nuevo con el status de los valores //reales de tus topicos
///////////////////////////////////////// /////////PRACTICA 3 //////////////////// ////PRUEBA DE PUBLICACIÓN/SUBSCRIPCIÖN /////////DESDE EL MQ EXPLORER////////// //SUBSCRIPCIONES NO ADMINISTRADAS/// //7a:ilitamos una Su:scripción desde el MQ5plorer //&,a a ser una su:scripcion autoadministrada por el //mq e5plorer8 es decir que el mane9a las colas de //destino' > Selecciona tu Queue Mana0er en el MQ5plorer ? ,e a su su:carpeta de #opics @ Da clic; derec4o seleccionas #est Su:scription n el campo #opic Strin0 C comida/carne/3 Aprieta el :oton de Su:scri:e 1 de9a la ventana a:ierta &"$ -A %I((S' E Selecciona la carpeta #opics 1 de a4i Status8 ve de a4i respecto al topico %$MIDA%A(" 1 todos sus su:topicos en el campo su:count de:en tener el valor de > diciendonos que todos esos topicos entran en esa su:scripción F Seleciona la carpeta de topicos 1 selecciona al topico %$MIDA%A("P$--$8 da clic; derec4o 1 selecciona #opic
> Selecciona tu Queue Mana0er en el MQ5plorer ? ,e a su su:carpeta de #opics @ Da clic; derec4o seleccionas #est Pu:lication n el campo #opic Strin0 C comida/carne/pollo n el campo de Messa0e Data coloca 7ola Mundo 1 da "#( 1 coloca otro mensa9e 7ola #$D$S da "#( E ,e a la ventana que tienes a:ierta del Su:scri:er 1 veras que a4i se te muestran los mensa9es F %ierra la ventana de su:scripciones 1 de pu:licaciones del MQ 5plorer
///////////////////////////////////////// /////////PRACTICA 4 //////////////////// ////PRUEBA DE PUBLICACIÓN/SUBSCRIPCIÖN /////////DESDE EL MQ EXPLORER////////// //SUBSCRIPCIONES ADMINISTRADAS////
************************** *Iniciamos los comandos mqsc runmqsc QM_PUB_SUB *%reamos una cola que 0uardara los mensa9e de nuestro *Su:scriptor D!I" Q-$%A-&QSUB' *%erramos el runmqsc "D **************************** //%reamos un $:9eto de su:scriptor > Selecciona tu Queue Mana0er en el MQ5plorer ? ,e a su su:carpeta de Su:scriptions 1 con :oton derec4o seleccionas "eH Su:scription @ n la ventana colocar el nom:re de la su:scripción SUB_ADM_!(U#A 1 das clic; en "e5t n el campo #opic Strin0 colocamos el comida/+ruta/3 1 en el campo Destination "ame el valor de QSUB Da clic; en !inis4 E Selecciona tu nueva su:scripción creada 1 da clic; derec4o Propiedades8 revisa esas propiedades de tu Su:scripción
//Usamos el pro0rama e9emplo amqssu: para suscri:ir > A:re una terminal de comandos ? 9ecutamos cd /opt/mqm/samp/:in @ 9ecutamos el comando /amqssu: comida/+ruta/platano QM_PUB_SUB De9amos esa consola a:ierta Durar @J se0undos a:ierta esa su:scripción pues es temporal //Usamos el pro0rama e9emplo amqspu: para pu:licar > 9ecutamos cd /opt/mqm/samp/:in ? 9ecutamos el comando /amqspu: comida/+ruta/platano QM_PUB_SUB @ colocamos un mensa9e Mensa9e pu:licado 1 damos "#( n la terminal que de9amos a:ierta de la su:scripción se mostrar el mensa9e que colocamos ,amos en el MQ5plorer 1 nos metemos en nuestro MQ 1 en la parte de las queues veremos que nuestra cola QSUB tenemos un mensa9e E %on lo anterior apreciamos que tuvimos ? su:scriptores8 uno administrado permanente 1 uno no administrado temporal F ,e a la carpeta de las su:scripciones8 selecciona nuestra su:scripción creada da clic; derec4o status 1 desde a4i puede ver la cantidad de mensa9es que 4a reci:ido la su:scripción K SI deseas sa:er en al0Ln momento que pu:licadores 1 su:scriptores estan activos para cierto o:9eto de topico8 selecciona ese o:9eto de tópico da clic; derec4o 1 esco0e6 #est Pu:lication #est Su:scription -o del punto K 4alo so:re nuestro tópico %$MIDA!(U#A
///////////////////////////////////////// /////////PRACTICA 5 //////////////////// //////MANEJANDO SEGURIDAD DESDE LOS TOPICOS////
> %reamos un usuario llamado mio en un 0rupo llamado mi0rupo sto desde una consola6 0roupadd mi0rupo useradd <0 mi0rupo mio ? %reamos una cola que se llama QSUB? **************************
runmqsc QM_PUB_SUB D!I" Q-$%A-&QSUB?' "D **************************** @ A:rimos una consola 1 cam:iamos de usuario a mio6 su mio (evisamos que nuestro nuevo usuario ten0a el 0rupo que aca:amos de decidir id mio "os cam:iamos al directorio de los comandos e9emplo de MQ cd /opt/mqm/samp/:in E #ratamos de 4acer PU#S a la cola que aca:amos de crear anteriormente /amqsput QM_PUB_SUB QSUB? F -es va a salir un (eason %ode ?J@ 9ecutan mqrc ?J@ 1 les va a decir MQ(%_"$#_AU#7$(I.D8 que indica que no tienen derec4o a conectarse K Neneral el si0uiente per+il para adquirir los derec4os necesarios a nivel de 0rupo mi0rupos para la cone5ión Desde otra consola coloca lo si0uiente6 setmqaut
J (e0resamos a nuestra consola del punto E 1 colvemos a e9ecutar6 /amqsput QM_PUB_SUB QSUB? >> -es sale el mismo codi0o ?J@ pero en este caso para 4acer PU# en la cola 9ecutamos el si0uiente comando para cam:iar eso6 setmqaut ? ,eran que 1a se les permite 4acer puts (e0resa a terminal de comandos del punto K colocan un par de mensa9es 1 los revisan en el MQ5plorer >@ A4ora :uscamos 0enerar un su:scriptor temporal 4acia el tópico comida/+ruta/platano Usamos6 la misma terminal del punto K del usuario mio /amqssu: comida/+ruta/platano QM_PUB_SUB > #e da de salida el condi0o ?J@ de que el 0rupo de tu usuario no tiene derec4o a 4acer su:scripciones8 asi que cam:iamos los si0uientes derec4os al o:9eto de topico que representa esos derec4os Usa otra terminal que no sea la del usuario mio setmqaut A4ora vuelve a intentar en la terminal del usuario mio &no cierres esta terminal' /amqssu: comida/+ruta/platano QM_PUB_SUB >E A:re otra terminal con el usuario mio su mio >F9ecuta una su:scripcion a nuestro anterior tópico 1 escri:imos unos mensa9es6
/amqspu: comida/+ruta/platano QM_PUB_SUB >K ,eras que en la ventana de la su:scripción estarn los mensa9es que aca:as de pu:licar > n una consola del usuario mio #rata de suscri:irte al topico comida/carne/pescado /amqssu: comida/carne/pescado QM_PUB_SUB ?J ,eras que no tienes derec4os para pu:licar en ese topico ?> A4ora en una terminal que no sea del usuario mio e9ecuta la si0uiente sentencia para darle derec4os de Pu:lic/Su:scri:e a los que mane9en el topico %$MIDA 1 seal del 0rupo al que pertenece mio6 setmqaut ,eras que a4ora si tiene derec4o de su:scripción de:ido a que va 4acia arri:a de la 9erarquía de o:9etos para :uscar al0un derec4o que le permita 4acer la su:scripción8 en este caso %$MIDAR ?? vuelve a quitarle los derec4os al tópico %$MIDA6 setmqaut
///////////////////////////////////////// /////////PRACTICA 6 //////////////////// //////PUB/SUB d!d MQI////
> ,e a la carpeta de /opt/mqm/samp cd /opt/mqm/samp ? A:re el arc4ivo amqssu:ac que es para 4acer una su:scripcion &no dura:le' 1 revisa el códi0o8 esta escrito en c @ A:re el arc4ivo amqspu:ac que es para 4acer una pu:licacion mane9ada por &Strin0' 1 revisa el códi0o8 esta escrito en c Si lo deseas puedes revisar los códi0os de %$B$- para pu:licación &amqJpu:Jc:l' 1 su:scripción &amqJsu:Jc:l' A4ora vamos a e9ecutar PUB-I%/SUBS%(IB pero mediante 9ava usanso el %-IPS E Primero a:riremos el eclipse 9ecuta las ? si0uientes instrucciones6 cd /root/eclipse /eclipse E> "os va a pedir que esco0amos un or;space coloquemos6 /root/Hor;space_mqi F Dentro del eclipse vamos a crear un pro9ecto n el menu selecciona6 !ile <= "eH <= Pro9ect <= Tava <= Tava Pro9ect <= "e5t K Dentro de la ventana que se te aparece colocas6 Pro9ect "ame6 PUB_SUB Das "5t >J n la ventana que te aparece se te o+rece si deseas a0re0ar al0una li:rería n nuestro caso si lo deseamos asi que seleccionamos la pestana -i:raries >> Seleccionamos el :otón Add 5ternal TA(s >? Buscamos la si0uiente ruta6 /opt/mqm/9ava/li: >@ Seleccionamos los TA(s que necesitamos6 comi:mmq9ar > %on esto veremos que la li:rería 1a esta a0re0ada 1 damos clic; a !inis4 > ,eras que 1a tienes creado tu pro9ecto de TA,A >E n la carpeta /root/%$DS tenemos los códi0os de 9ava para pu:licación 1 su:scripción n este caso los ? son temporales -os arc4ivos son6 Pu:licador9ava6 Pu:licara un mensa9e al tópico %$MIDA!(U#AP-A#A"$ Su:scriptor9ava6 7ace una su:cripción temporal 1
autoF A4ora vamos a importtar estos arc4ivos a nuestro pro9ecto >KSeleccionamos nuestro pro9ecto PUB_SUB8 damos clic; derec4o 1 seleccionamos Import > sco0emos Neneral <= !ile S1stem ?J "os aparece una ventana 1 en su campo !rom Director1 :uscamos a /root/%$DS ?> n el panel iquierdo de a:a9o damos clic; en el c4ec;:o5 que dice %$DS8 c4eca que del panel derec4o esten se< leccionados nuestros códi0os ?? n el campo Into !older damos clic; en :roHse 1 seleccionamos PUB_SUB <= src dando clic; en $ ?@ 2a en la ventana principal de Import damos clic; a !inis4 ? 2a en la ventana principal del %-IPS veras que al dar clic; en el pro9ecto PUB_SUB <= src <= &De+ault Pac;a0e' a4i estarn nuestros ? códi0os ? n PUB_SUB <= src <= &De+ault Pac;a0e' dale clic; al códi0o Su:scriptor9ava 1 revisa el códi0o del mismo ?E n PUB_SUB <= src <= &De+ault Pac;a0e' dale clic; al códi0o Pu:licador9ava 1 revisa el códi0o del mismo ?F Antes e9ecutar los códi0os nos +alta crear un %anal Servidor en nuestro Queue Mana0er adems de un listener para de+inir la cone5ión con la aplicación cliente 9ecuta lo si0uiente en la consola6 runmqsc QM_PUB_SUB D!I" %7A""-&S(,(' %7-#2P&S,(%$""' #(P#2P%P' D!I" -IS#"(&-IS#"(' O #(P#2P%P' P$(#&JJJ' O %$"#($-&QMN(' S#A(# -IS#"( &-IS#"(' "D ?K A4ora e9ecuta la clase del Su:scriptor re0resando al %-IPS8 seleccionamos la pestaVa de la clase Su:scriptor 1 la e9ecutamos dando clic; en el :otón (un que tiene un sim:olo de una +lec4a :lanca dentro de un circulo ro9o ? n la ventana in+erior de %onsole nos aparece un mensa9e que dice sperando al Pu:licador enemos @J se0undos para lanar al Pu:licador' @J 9ecutamos a la clase Pu:licador 1 saldra un mensa9e Mensa9e Pu:licado e inmendiatamente despuWs se re0resa a la ventana de la consola del su:scriptor mostrandonos el mensa9e6 #X#$ PUB-I%AD$6 Mensa9e pu:licado &numero aleatorio' @> %$n el anterior mensa9e sa:emos que el su:scriptor tomo el mensa9e pu:licado
///////////////////////////////////////// /////////PRACTICA 7 //////////////////// //////M"!#$% A!&"'(%"%////
> ,e a la carpeta de /opt/mqm/samp cd /opt/mqm/samp ? A:re el arc4ivo amqsc:+Jc que 4ace uso de MQ%B 1 MQ%#- para consumir los mensa9es de di+erentes colas asincronamente #iene los si0uientes pasos6 >< MQ$P" de la cola para I"PU# ?< MQ%B (e0istra una +unción para reci:ir mensa9es @< MQ%#- Inicia el consumo de mensa9es < SP(A mensa9es 4asta a que el usuario de enter en la consola &el usuario de:e estar dando MQPU#S en las colas que son parte del MQ%B' < MQ%#- Se detiene el consumo de mensa9es E< Se cierra la cola de donde se consumen los mensa9es @ De+inimos @ colas en nuestro QM runmqsc QM_PUB_SUB D!I" Q-$%A-&%$-A>' D!I" Q-$%A-&%$-A?' D!I" Q-$%A-&%$-A@' "D 9ecutamos cd /opt/mqm/samp/:in 9ecutamos el si0uiente comando para mane9ar el mensa9eo asincrono so:re nuestras @ colas /amqsc:+ %$-A> %$-A? %$-A@ QM_PUB_SUB /amqsput %$-A? QM_PUB_SUB /amqsput %$-A@ QM_PUB_SUB K ,eras que los mensa9es te apareceran en nuestra consola del %all BAc;
Da clic; en la consola del %all Bac; para que se sal0a
///////////////////////////////////////// /////////PRACTICA ) //////////////////// //////T*#! Ad&'&%"#+! PUB/SUB////
> "osotros podemos tener colas alias que apunten a topicos Un e9emplo sería el si0uiente runmqsc QM_PUB_SUB D!I" QA$PI%$_A-IAS' #A(N#2P$PI%' #A(N# &%$MIDA%A("P$--$' "D ? Puedes c4ecar que apunta a un tópico8 desple0ando sus propiedades6 runmqsc QM_PUB_SUB DISP-A2 QA$PI%$_A-IAS' "D @ Asi 1a puedes usar este alias como si +uera el tópico8 si tu deseas 4acer pu:licaciones solo tienes que 4acerle PU#S a esta cola A-IAS @> n tu MQ 5plorer selecciona QM_PUB_SUB <= #opics >< Da clic; derec4o 1 selecciona #est Su:scription ?< n la ventana que aparece coloca #opic Strin0C comida/carne/pollo 1 da clic; en Su:scri:e8 de9a esa ventana a:ierta @? ,e a la consola de comandos 1 coloca mensa9es en tu cola alias6 cd /opt/mqm/samp/:in /amqsput #$PI%$_A-IAS QM_PUB_SUB @@ (e0resa a tu MQ5plorer 1 veras que en tus ventana que a:riste para suscri:ir te muestra los mensa9es que colocaste en la cola alias A4ora vamos a ver el uso de S#S &Nrupos de QM' %rea un QM llamado QM_A-#("A#I,$ 1 lo iniciamos n una consola e9ecuta crtmqm QM_A-#("A#I,$ strmqm QM_A-#("A#I,$ E , al MQ5plorer8 selecciona6 QueueMana0ers<= Sets <= "eH Set F #e a:re una ventana 1 colocas6 "ameC MI_S# #1peC Manual K Damos clic; en ne5t
Seleccionas nuestros ? Queue Mana0ers que tenemos 1 das clic; en !inis4 >J Al S# lo de:es de ver 1a en el ar:ol de o:9etos de MQ :a9o Queue Mana0ers >> Selecciona el S# QM_A-#("A#I,$S 1 pon Stop -ocal Queue Mana0ers para detener todos los Queue Mana0ers que son parte del S# Indicas que sea inmediato >? Para iniciarlos de nuevo usa Start -ocal Queue Mana0ers >@ "$#A6 Si en al0Ln momento lo deseamos podemos 4acer un set de la +orma Automatica para esta:lecerles +iltros como por nom:re Para ello tendrías que seleccionar en el MQ5plorer6 QueueMana0ers<= Sets <= "eH Set <= &indicar el nom:re de S# 1 que sea automticos 1 darle ne5t' <= Mana0e !ilter <= Add > "ota6 "osotros podemos seleccionar que cuando 0eneramos un canal servidor podamos seleccionar el m5imo numero de instancias de cone5ión 1 el ma5imo numero de estas por aplicación > Dentro del canal que 1a teníamos de+inido llamado S(,(8 en el MQ5plorer da clic; derec4o 1 selecciona Properties >E Selecciona la sección de 5tended >F De a4i cam:ia a6 Ma5imum Instance C > Ma5imum Instance per %lient C > >K " ese caso con lo que pusimos indicamos que solo una cone5ión &instancia' este canal puede mane9ar > ,uelve a a:rir tu %-IPS cd /root/eclipse /eclipse ?J 9ecuta tu e9emplo de la su:scripción veras que todo esta :ien 1 te dara el mensa9e sperando Pu:licador ?> Inmediatamente despuWs e9ecuta al Pu:licador 1 veras que te lana un error ?J ?? n la consola de comandos e9ecuta6 mqrc ?J ?@ #e dar el mensa9e MQ(%_Q_MN(_"$#_A,AI-AB- indicando que no 4a1 cone5iones disponi:les ? spera unos @J se0undos vuelve a e9ecutar al Pu:licador 1 veras que te da el mensa9e Mensa9e Pu:licado8 esto se de:e a que el Su:scriptor 1a esta dada de :a9a 1 1a no esta ocupando la cone5ión ****************************