Today one of our subscribers Pavan had asked us by using comment , Here based on the query of Pavan we are writing the following article, which would Pause the Queue at Runtime even when the AdminServer/AdminConsole is unavailable, thus we took out sometime and just now created a WLST script which would do the same job very easily.
In this script you can choose from which end do you want Queue to get paused, say if you want to pause the messages to be inserted then you can use pauseProduction , if you need that the consumption from the queue should stop then use pauseConsumtion and if you want that Queue should not insert or consume then use both. This way you can pause the queue as per your requirement, also with this you can resume the queue too by using resumeProduction, resumeConsumption or both of them. 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.
Steps to Pause and Resume A Queue Using WLST
Step1). Create a Directory somewhere in your file system like : “C:WLSTPause_Queue”
Step2). Write a Properties file “domain.properties“ inside “C:WLSTPause_Queue” like following:
server.url=t3://10.10.10.10:7003 username=weblogic password=weblogic tragated.server.name=MS-1 jms.server.name=JMSServer-1 system.module.name=SystemModule-1 queue.name=Q-1
Step2). Now in the same directory write the following WLST Script “pause_queue.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) serverUrl = configProps.get("server.url") Username = configProps.get("username") Password = configProps.get("password") tragatedServerName = configProps.get("tragated.server.name") jmsServerName = configProps.get("jms.server.name") systemModuleName = configProps.get("system.module.name") queueName = configProps.get("queue.name") connect(Username,Password,serverUrl) serverRuntime() cd('JMSRuntime/'+tragatedServerName+'.jms/JMSServers/'+jmsServerName+'/Destinations/'+systemModuleName +'!'+ queueName) ################## # To PAUSE A Queue ################## ######## This would NOT let the messages Insert in the queue but it would let the messages get Consumed ########### cmo.pauseProduction() print 'Queue: "', queueName ,'" has been PRODUCTION Paused Successfully' ######## This would let the messages Insert in the queue but it would NOT let the messages get Consumed ########### cmo.pauseConsumption() print 'Queue: "', queueName ,'" has been CONSUMPTION Paused Successfully' ################### # To RESUME A Queue ################### #cmo.resumeProduction() #print 'Queue: "', queueName ,'" has been PRODUCTION Resumed Successfully' #cmo.resumeConsumption() #print 'Queue: "', queueName ,'" has been CONSUMPTION Resumed Successfully'
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 pause_queue.py
Following would be the Output
java weblogic.WLST pause_queue.py Initializing WebLogic Scripting Tool (WLST) ... Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands Connecting to t3://10.10.10.10:7003 with userid weblogic ... Successfully connected to managed Server 'MS-1' that belongs to domain 'Domain_7001'. 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) Queue: " Q-1 " has been PRODUCTION Paused Successfully Queue: " Q-1 " has been CONSUMPTION Paused Successfully
Regards,
Ravish Mody