资源已存在



我有一个队列的XML列表。我使用python脚本和wsadmin控制台配置它们时没有遇到问题。现在,我想将新队列添加到现有列表中并创建它们。在创建时,控制台识别出具有JNDI名称的队列已经存在,然后停止脚本。我如何忽略已经存在的资源并继续创建新添加的队列

我的python脚本

import sys
sys.modules['AdminConfig'] = AdminConfig
sys.modules['AdminControl'] = AdminControl
sys.modules['AdminApp'] = AdminApp
sys.modules['AdminTask'] = AdminTask
sys.modules['Help'] = Help
import myfunctions as fl
import xml.etree.ElementTree as ET
tree = ET.parse('queue_xml/queue.xml')
root = tree.getroot()
scopes = root.findall('.//scope')

def createqueue(server_id,ime,jndi,mqname):
print(server_id)
print("creating "+ime,jndi,mqname)
print("-------------------------------------------")
AdminTask.createWMQQueue(server_id,
['-name', ime,
'-jndiName', jndi,
'-queueName', mqname
]
)                 
for scope in scopes:
typee= scope.find('type').text
scopename= scope.find('scopename').text
qe = scope.findall('.//queue')
for q in qe:
ime = q.find('name').text
jndi = q.find('jndi').text
mqname = q.find('mqname').text
x = fl.get_scope(typee, scopename)
createqueue(x,ime,jndi,mqname)
AdminConfig.save()

XML脚本

<data>
<scope>
<type>cluster</type>
<scopename>TRX</scopename>
<queue>
<name>AuthenticFlagUpdate100</name>
<jndi>jms/as/AuthenticFlagUpdate100</jndi>
<mqname>GCWOD1.QU.CCMS.AUTH.FLAG.UPDATE100</mqname>
</queue>
</scope>
<scope>
<type>Servernode</type>
<scopename>Node:somenode/Server:someserver</scopename>
<queue>
<name>AuthenticFlagUpdate230</name>
<jndi>jms/as/AuthenticFlagUpdate230</jndi>
<mqname>GCWOD1.QU.CCMS.AUTH.FLAG.UPDATE200</mqname>
</queue>
</scope>
<scope>
<type>Node</type>
<scopename>somenode</scopename>
<queue>
<name>AuthenticFlagUpdate310 </name>
<jndi>jms/as/AuthenticFlagUpdate310</jndi>
<mqname>GCWOD1.QU.CCMS.AUTH.FLAG.UPDATE300</mqname>
</queue>
</scope>
</data>

您可以通过使用"AdminTask.listWMQQueues";,如果已经存在,则跳过队列创建。

参见更新的";createqueue";更改后的功能:

def createqueue(server_id,ime,jndi,mqname):
print(server_id)
print("creating "+ime,jndi,mqname)
print("-------------------------------------------")
if AdminTask.listWMQQueues(server_id).find(ime) != -1:
print ("Queue %s already exists, skip queue creation" % (ime) )
else:
AdminTask.createWMQQueue(server_id,
['-name', ime,
'-jndiName', jndi,
'-queueName', mqname
]
)
#end if
#end def

谢谢,它应该能工作。但我采取了不同的方法。

def createqueue(server_id,name,jndi,mqname):
try:
AdminTask.createWMQQueue(server_id,
['-name', name,
'-jndiName', jndi,
'-queueName', mqname
]
)
print("creating queue "+name, jndi)
except:
print("skip exception "+name, jndi)

最新更新