2010-03-29 25 views
5

Soy nuevo en mqseries y comencé con IBM WebSphere MQ curses. Hay ejemplos con los gestores de colas MQ_APPLE y MQ_ORANGE. No tengo problemas para enviar mensajes a la cola local o remota con MQ Explorer, pero quería enviar ese mensaje desde el código: Python o Java. Probé biblioteca de Python pymqi con código como el siguiente:¿Cómo conectarse a la cola de MQseries local usando Python?

import pymqi 

qmgr = pymqi.QueueManager(None) 
qmgr.connect('QM_APPLE') 

putq = pymqi.Queue(qmgr, 'Q1') 
putq.put('Hello from Python!') 

pero recibo de error:

Traceback (most recent call last): 
    File "mq_put.py", line 4, in <module> 
     qmgr.connect('QM_APPLE') 
    File "c:\Python26\lib\site-packages\pymqi.py", line 758, in connect 
     raise MQMIError(rv[1], rv[2]) 
pymqi.MQMIError: MQI Error. Comp: 2, Reason 2540: FAILED: MQRC_UNKNOWN_CHANNEL_NAME 

Hay QM_APPLE gestor de colas con Q1 cola local.

¿Qué problema tiene mi código?

Respuesta

3

Según el error, parece que está intentando conectarse a un gestor de colas remoto, pero está utilizando el método de enlaces de gestor de colas local para conectarse. Digo esto porque el error indica que el cliente mqi no sabe a qué canal conectarse. ¿Puede aclarar si está utilizando un gestor de colas local o un gestor de colas remoto? He pegado el siguiente código para conectarme a un gestor de colas remoto usando un canal.

import pymqi 

queue_manager = "QUEUE_MANAGER_NAME" 
channel = "SVRCONN.1" 
host = "host.domain.com" 
port = "1434" 
conn_info = "%s(%s)" % (host, port) 

qmgr = pymqi.QueueManager(None) 
qmgr.connectTCPClient(queue_manager, pymqi.cd(), channel, conn_info) 
+0

quiero usar cola local. AFAIK no hay un canal El canal aparece en la lección sobre el envío de mensajes en la configuración cliente-servidor (también tengo problemas con esta lección). Completé la lección sobre el envío de mensajes usando colas locales y remotas y quería hacerlo desde el código. –

+0

Como dijo T.Rob, parece que está utilizando un módulo pymqi que está construido en modo cliente. Si desea utilizar una conexión de enlaces (gestor de colas local, sin canal), debe utilizar un módulo pymqi integrado en modo servidor. Echa un vistazo a este enlace: http://packages.python.org/pymqi/index.html#download-build-install De lo contrario, siempre puedes simplemente crear un canal en tu gestor de colas local y usar el método connectTCPClient como encima. – gregwhitaker

+0

Creé el canal del tipo 'receptor', pero no puedo activarlo. ¿Qué tipo de canal debería crear? –

2

Su publicación menciona que desea que esto se ejecute en Python o Java. Python no puedo ayudar pero el respondedor anterior sí, fue genial. En lo que respecta a Java, tal vez pueda señalarte en la dirección correcta. IBM admite Java y JMS y proporciona una cantidad de programas de muestra de cada uno. Por defecto, se instalan en:

C: \ Archivos de programa \ IBM \ WebSphere MQ \ Tools \ wmqjava

C: \ Archivos de programa \ IBM \ WebSphere MQ \ tools \ JMS

también ofrecer mi propio código de ejemplo aquí: http://www.ibm.com/developerworks/websphere/techjournal/0610_woolf/0610_woolf.html

la documentación para la implementación de la API de Java y JMS WMQ del IBM está aquí: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/uj10120_.htm

los documentos que encontré en el módulo Python parecen indicar que debe estar vinculado a las bibliotecas WMQ del Cliente o del Servidor y su error parece indicar que tiene vinculadas las vinculaciones del cliente. Si ese es el caso, debe proporcionar la información de conexión como se indicó anteriormente. Los códigos Java y JMS son compatibles con cualquier tipo de conexión, por lo que no es necesario realizar ningún enlace, pero aún así debe proporcionar los detalles de conexión adecuados. En particular, por favor lea el capítulo sobre Diferencias de conexión: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/ja11010_.htm

- T.Rob

+0

Tienes razón. Utilicé enlaces de clientes mientras que solo ese tipo de módulo está disponible en forma precompilada. En las muestras, he encontrado 'MQSample.java' y parece funcionar. Gracias. –

Cuestiones relacionadas