2010-03-29 13 views
5

Ben mqseries için yeniyim ve IBM WebSphere MQ curses ile başladım. MQ_APPLE ve MQ_ORANGE kuyruk yöneticileriyle ilgili örnekler vardır. MQ Explorer ile yerel veya uzak sıraya mesaj göndermekle ilgili bir sorunum yok, ancak bu mesajı koddan göndermek istedim: Python veya Java. Böyle koduyla Python pymqi kütüphane çalıştı:Python kullanarak yerel MQseries kuyruğuna nasıl bağlanır?

import pymqi 

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

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

ama hata alırsınız:

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 

Q1 yerel kuyruğunda ile QM_APPLE kuyruk yöneticisi yoktur.

Kodumda sorun mu var?

cevap

3

hata dayalı olarak, büyük bir uzak kuyruk yöneticisi bağlanmaya çalışıyorsunuz, ancak bağlanmaya yerel sıra yöneticisi bağlamaları yöntemi kullanılarak anlaşılıyor. Bunu söylüyorum çünkü hata mqi istemcisinin hangi kanala bağlanacağını bilmediğini söylüyor. Yerel bir kuyruk yöneticisi veya bir uzak kuyruk yöneticisi kullanıp kullanmadığınızı açıklayabilir misiniz? Bir kanalı kullanarak uzak bir kuyruk yöneticisine bağlanmak için aşağıdaki kodu yapıştırdım.

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

. AFAIK kanal yok. Kanal, istemci-sunucu yapılandırmasında mesaj göndermeyle ilgili derste görünür (bu dersle ilgili problemlerim var). Yerel ve uzak kuyrukları kullanarak mesaj göndermekle ilgili dersi tamamladım ve bunu koddan yapmak istedim. –

+0

T.Rob'un dediği gibi, istemci modunda yerleşik bir pymqi modülü kullanıyorsunuz. Bir bağlama bağlantısı kullanmak istiyorsanız (yerel sıra yöneticisi, kanal yok) sunucu modunda yerleşik bir pymqi modülü kullanmanız gerekir. Bu bağlantıya bir göz atın: http://packages.python.org/pymqi/index.html#download-build-install Aksi takdirde, her zaman yerel kuyruk yöneticinizde bir kanal oluşturabilir ve benzeri gibi connectTCPClient yöntemini kullanabilirsiniz. yukarıdaki. – gregwhitaker

+0

'Receiver' türünün kanalını oluşturdum ancak etkinleştiremiyorum. Ne tür bir kanal oluşturmalıyım? –

2

Yazınız, bunun Python veya Java'da çalıştırılmasını istersiniz. Python Yardım edemem ama önceki cevaplayan çok havalı. Java'ya gelince, belki seni doğru yöne yönlendirebilirim. IBM, hem Java hem de JMS'yi destekler ve her birinin bir dizi örnek programı sağlar.

C: Varsayılan olarak, bu kurulur \ Program Files \ IBM \ WebSphere MQ \ araçları \ wmqjava

C: \ Program Files \ IBM \ WebSphere MQ \ araçları \ de

Ben jms burada kendi örnek kod yukarı sunuyoruz: http://www.ibm.com/developerworks/websphere/techjournal/0610_woolf/0610_woolf.html

Java ve JMS WMQ API IBM'in uygulanması için dokümanları buradadır: buldum http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/uj10120_.htm

docs Python modülünde, bunun İstemci veya Sunucu WMQ kitaplıklarına bağlanması gerektiğini ve hatalarınızın istemci bağlantılarının bağlandığınızı belirttiğini belirttiği görülüyor. Bu durumda, daha önce yayınlanan işaretli bağlantı bilgilerini vermeniz gerekir. Java ve JMS kodu ya bağlantı tipini destekler, böylece yapılacak hiçbir bağlantı yoktur, ancak yine de uygun bağlantı detaylarını sağlamanız gerekir. Özellikle, Bağlantı Farklılıklar üzerinde bölümünü okuyunuz: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/ja11010_.htm

- T.Rob

Yerel kuyruk kullanmak istiyorum
+0

Haklısınız. İstemci bağlamaları kullanılırken, yalnızca bu tür bir modül önceden derlenmiş halde kullanılabilir. Örneklerde 'MQSample.java'yı buldum ve işe yarayacak gibi görünüyor. Teşekkür ederim. –

İlgili konular