如何以编程方式阻止JMS侦听器使用?

时间:2014-10-22 17:54:55

标签: java jms weblogic

如何在WebLogic中停止JMS使用者?

我需要以编程方式通知WebLogic停止JMS侦听器(MDB)。我的意思是停止消耗队列的消息,稍后再通过代码再次启动它。

管理控制台可能有一个选项(可能会停止工厂?),但我们需要在代码中执行此操作。

相当于Spring DefaultMessageListenerContainer.stop()的东西。

1 个答案:

答案 0 :(得分:2)

目标mBean上的Weblogic中的等效项为pauseConsumption()。暂停应该影响目标“定位”的任何内容 - 可以是群集或单个服务器。

您可以通过管理控制台,通过WLST脚本或Java JMX以编程方式执行此操作。以下链接显示了所有3种方法:

通过管理控制台:

JMS Modules -> <Module Name> -> Destination Name -> Pause Consumption

http://docs.oracle.com/cd/E17904_01/apirefs.1111/e13952/pagehelp/JMSjmsdestinationsjmsqueuepauseconsumptiontitle.html

通过WLST脚本编写:

cd('JMSRuntime/'+serverName+'.jms/JMSServers/'+jmsServerName+'/Destinations/'+jmsModName+'!'+ queueName)
cmo.pauseProduction()

http://middlewaremagic.com/weblogic/?p=6687

通过Java JMX:

for (String queueName : queueNames) {
  exception = null;
  try {
    ObjectName destination = findQueueObjectName(con, jmsModuleName, queueName);
    Object pauseConsResult = con.invoke(destination,"pauseConsumption", null, null);

http://khylo.blogspot.com/2011/02/weblogic-jms-pause-and-resume.html