Today one of our subscribers Pavan had come back saying that the WLST script which was created by us previously How to Move Messages From One Queue To Another Queue Using WLST was only “working to move the messages from one queue to another queue which are on the same servers only” by using comment , and as per his requirement they need to move the messages from Queue-1 to Queue-2 which are targeted to Server-1 and Server-2 respectively. Hence I have just made few modification in my previous script and thus this is the update version of it
I had to add two URL’s to get connected to the with the respective servers and also added two System Module this way you can move the messages from any Source Server to the Destination Server which can be in the same module or if the destination server is in different system module too this way its more flexible. All this can be done using the same script just give the domain and there servers details in the domain.properties files and you are good to go.
[Updated Version] Steps to Move Messages From One Queue To Another Queue Using WLST
Step1). Create a Directory somewhere in your file system like : “C:WLSTMove_Messages”
Step2). Write a Properties file “domain.properties“ inside “C:WLSTMove_Messages” like following:
###################### # Destination ###################### new.server.url=t3://localhost:8003 new.system.module.name=SystemModule2 new.tragated.server.name=MS-2 new.jms.server.name=JMSServer2 new.queue.name=Q2 ###################### # Source ###################### old.server.url=t3://localhost:8002 old.system.module.name=SystemModule1 old.tragated.server.name=MS-1 old.jms.server.name=JMSServer1 old.queue.name=Q1 username=weblogic password=weblogic
Step2). Now in the same directory write the following WLST Script “move_messages.py” like following:
############################################################################# # # @author Copyright (c) 2010 - 2011 by Middleware Magic, All Rights Reserved. # ############################################################################# from java.io import FileInputStream import java.lang import os import string propInputStream = FileInputStream("domain.properties") configProps = Properties() configProps.load(propInputStream) newserverUrl = configProps.get("new.server.url") newsystemModuleName = configProps.get("new.system.module.name") newTragatedServerName = configProps.get("new.tragated.server.name") newJmsServerName = configProps.get("new.jms.server.name") newQueueName = configProps.get("new.queue.name") oldserverUrl = configProps.get("old.server.url") oldsystemModuleName = configProps.get("old.system.module.name") oldTragatedServerName = configProps.get("old.tragated.server.name") oldJmsServerName = configProps.get("old.jms.server.name") oldQueueName = configProps.get("old.queue.name") Username = configProps.get("username") Password = configProps.get("password") # Connecting to the Destination connect(Username,Password,newserverUrl) serverRuntime() print 'Getting the traget...' cd('/JMSRuntime/'+newTragatedServerName+'.jms/JMSServers/'+newJmsServerName+'/Destinations/'+newsystemModuleName +'!'+ newQueueName) target = cmo.getDestinationInfo() print 'Got the traget...' disconnect() print '' # Connecting to the Source connect(Username,Password,oldserverUrl) serverRuntime() cd('/JMSRuntime/'+oldTragatedServerName+'.jms/JMSServers/'+oldJmsServerName+'/Destinations/'+oldsystemModuleName +'!'+ oldQueueName) print 'Moving the messages to the new traget...' cmo.moveMessages('',target) print 'Messages have been moved to the traget Successfully !!!' print '====================================================================================' print 'Messages from queue: "'+oldQueueName+'" have been moved to the new queue: "'+newQueueName+'" Successfully !!!' print '===================================================================================='
Step3). Now Open a Command/Shell Prompt and then run the “setWLSEnv.sh” script to set the CLASSPATH and PATH environment variables. Run the “. ./setWLSEnv.sh” by adding two DOTs separated by a single space …..before the actual script like following : (use ‘cd’ command to move inside the <BEA_HOME>/wlserver_10.3/server/bin) then run the following command….
. ./setWLSEnv.sh
Note: Here The first DOT represents that set the Environment in the current Shell, AND the second ./ represents execute the script from the current directory.
Step4). Run the Above WLST Script like following:
java weblogic.WLST move_messages.py
Following would be the Output
java weblogic.WLST move_messages.py Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Connecting to t3://localhost:8003 with userid weblogic ... Successfully connected to managed Server 'MS-2' that belongs to domain 'Domain_8001'. Warning: An insecure protocol was used to connect to the server. To ensure on-the-wire security, the SSL port or Admin port should be used instead. Location changed to serverRuntime tree. This is a read-only tree with ServerRuntimeMBean as the root. For more help, use help(serverRuntime) Getting the traget... Got the traget... Disconnected from weblogic server: MS-2 Connecting to t3://localhost:8002 with userid weblogic ... Successfully connected to managed Server 'MS-1' that belongs to domain 'Domain_8001'. Warning: An insecure protocol was used to connect to the server. To ensure on-the-wire security, the SSL port or Admin port should be used instead. Moving the messages to the new traget... Messages have been moved to the traget Successfully !!! ==================================================================================== Messages from queue: "Q1" have been moved to the new queue: "Q2" Successfully !!! ====================================================================================
Note:
Regards,
Ravish Mody