Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何关闭JAVA客户端和活动MQ队列之间的特定套接字_Java_Sockets_Activemq - Fatal编程技术网

如何关闭JAVA客户端和活动MQ队列之间的特定套接字

如何关闭JAVA客户端和活动MQ队列之间的特定套接字,java,sockets,activemq,Java,Sockets,Activemq,我必须通过关闭活动MQ使用者套接字来测试一个特定的场景,而不终止java客户机进程和活动MQ服务器。 关闭JAVA客户端和活动MQ队列之间的特定套接字的最佳方法是什么?可以通过调用org.apache.activemq.ActiveMQMessageConsumer.close()或org.apache.activemq.ActiveMQConnection.close()关闭消费者/生产者的所有会话 更新 您可以使用VisualVM和call stop方法 请考虑,如果您的客户端正在使用故障转

我必须通过关闭活动MQ使用者套接字来测试一个特定的场景,而不终止java客户机进程和活动MQ服务器。
关闭JAVA客户端和活动MQ队列之间的特定套接字的最佳方法是什么?

可以通过调用
org.apache.activemq.ActiveMQMessageConsumer.close()
org.apache.activemq.ActiveMQConnection.close()
关闭消费者/生产者的所有会话

更新 您可以使用VisualVM和call stop方法

请考虑,如果您的客户端正在使用故障转移,他将自动重新连接

或者通过下面的代码

按ID或RemoteAddress关闭1个使用者

import java.util.HashMap;
导入java.util.Map;
导入java.util.Set;
导入javax.management.MBeanServerConnection;
导入javax.management.MBeanServerInvocationHandler;
导入javax.management.ObjectName;
导入javax.management.remote.JMXConnector;
导入javax.management.remote.JMXConnectorFactory;
导入javax.management.remote.JMXServiceURL;
导入org.apache.activemq.broker.jmx.ConnectionViewMBean;
公共类JMXCloseConsumer{
公共静态void main(字符串[]args)引发异常{
JMXServiceURL=newjmxserviceurl(“服务:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
Map env=new HashMap();
字符串[]creds={“admin”,“admin”};
环境put(JMXConnector.CREDENTIALS、creds);
JMXConnector jmxc=JMXConnectorFactory.connect(url,env);
MBeanServerConnection conn=jmxc.getMBeanServerConnection();
ObjectName conName=新的ObjectName(
“org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName=openwire,connectionViewType=clientId,connectionName=*”;
设置连接=conn.queryNames(conName,null);
Object[]c=connections.toArray();
对于(int s=0;s
按连接器名称关闭所有使用者

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.broker.jmx.ConnectorViewMBean;

public class JMXCloseAllConsumers {

    public static void main(String[] args) throws Exception {
        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        Map<String, String[]> env = new HashMap<>();
        String[] creds = { "admin", "admin" };
        env.put(JMXConnector.CREDENTIALS, creds);
        JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
        MBeanServerConnection conn = jmxc.getMBeanServerConnection();
        ObjectName activeMq = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost");
        BrokerViewMBean mbean = MBeanServerInvocationHandler.newProxyInstance(conn, activeMq, BrokerViewMBean.class,
                true);
        Map<String, String> props = mbean.getTransportConnectors();
        for (Iterator<?> iter = props.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String value1 = props.get(name);
            System.out.println(value1);
            ObjectName connector = new ObjectName(
                    "org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName="
                            + name);

            ConnectorViewMBean connectorViewMBean = MBeanServerInvocationHandler.newProxyInstance(conn, connector,
                    ConnectorViewMBean.class, true);
            System.out.println(connectorViewMBean.connectionCount());
            if (connectorViewMBean.connectionCount() > 0) {
                connectorViewMBean.stop();
            }
        }
    }
}
import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
导入javax.management.MBeanServerConnection;
导入javax.management.MBeanServerInvocationHandler;
导入javax.management.ObjectName;
导入javax.management.remote.JMXConnector;
导入javax.management.remote.JMXConnectorFactory;
导入javax.management.remote.JMXServiceURL;
导入org.apache.activemq.broker.jmx.BrokerViewMBean;
导入org.apache.activemq.broker.jmx.ConnectorViewMBean;
公共类JMXCloseAllConsumers{
公共静态void main(字符串[]args)引发异常{
JMXServiceURL=newjmxserviceurl(“服务:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
Map env=new HashMap();
字符串[]creds={“admin”,“admin”};
环境put(JMXConnector.CREDENTIALS、creds);
JMXConnector jmxc=JMXConnectorFactory.connect(url,env);
MBeanServerConnection conn=jmxc.getMBeanServerConnection();
ObjectName activeMq=newobjectname(“org.apache.activeMq:type=Broker,brokerName=localhost”);
BrokerViewBean mbean=MBeanServerInvocationHandler.newProxyInstance(conn、activeMq、BrokerViewBean.class、,
正确的);
Map props=mbean.getTransportConnectors();
for(Iterator iter=props.keySet().Iterator();iter.hasNext();){
字符串名称=(字符串)iter.next();
字符串值1=props.get(名称);
系统输出打印项次(值1);
ObjectName连接器=新的ObjectName(
org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName=
+姓名);
ConnectorViewMBean ConnectorViewMBean=MBeanServerInvocationHandler.newProxyInstance(conn,连接器,
ConnectorViewMBean.class,true);
System.out.println(connectorViewMBean.connectionCount());
如果(connectorViewMBean.connectionCount()>0){
connectorViewMBean.stop();
}
}
}
}

import java.util.HashMap;
导入java.util.Iterator;
导入java.util.Map;
导入java.util.Set;
导入javax.management.MBeanServerConnection;
导入javax.management.MBeanServerInvocationHandler;
导入javax.management.ObjectName;
导入javax.management.remote.JMXConnector;
导入javax.management.remote.JMXConnectorFactory;
导入javax.management.remote.JMXServiceURL;
导入org.apache.activemq.broker.jmx.BrokerViewMBean;
导入org.apache.activemq.broker.jmx.ConnectionViewMBean;
导入org.apache.activemq.broker.jmx.ConnectorViewMBean;
公共类JMXCloseAllConsumers{
公共静态void main(字符串[]args)引发异常{
JMXServiceURL=newjmxserviceurl(“服务:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
Map env=new HashMap();
字符串[]creds={“admin”,“admin”};
环境put(JMXConnector.CREDENTIALS、creds);
JMXConnector jmxc=JMXConnectorFactory.connect(url,env);
MBeanServerConnection conn=jmxc.getMBeanServerConnection();
ObjectName activeMq=newobjectname(“org.apache.activeMq:type=Broker,brokerName=localhost”);
BrokerViewBean mbean=MBeanServerInvocationHandler.newProxyInstance(conn、activeMq、BrokerViewBean.class、,
正确的);
Map props=mbean.getTransportConnectors();
for(Iterator iter=props.keySet().Iterator();iter.hasNext();){
字符串名称=(字符串)iter.next();
System.out.println(名称);
ObjectName连接器=新的ObjectName(
“啊
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.broker.jmx.ConnectorViewMBean;

public class JMXCloseAllConsumers {

    public static void main(String[] args) throws Exception {
        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        Map<String, String[]> env = new HashMap<>();
        String[] creds = { "admin", "admin" };
        env.put(JMXConnector.CREDENTIALS, creds);
        JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
        MBeanServerConnection conn = jmxc.getMBeanServerConnection();
        ObjectName activeMq = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost");
        BrokerViewMBean mbean = MBeanServerInvocationHandler.newProxyInstance(conn, activeMq, BrokerViewMBean.class,
                true);
        Map<String, String> props = mbean.getTransportConnectors();
        for (Iterator<?> iter = props.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String value1 = props.get(name);
            System.out.println(value1);
            ObjectName connector = new ObjectName(
                    "org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName="
                            + name);

            ConnectorViewMBean connectorViewMBean = MBeanServerInvocationHandler.newProxyInstance(conn, connector,
                    ConnectorViewMBean.class, true);
            System.out.println(connectorViewMBean.connectionCount());
            if (connectorViewMBean.connectionCount() > 0) {
                connectorViewMBean.stop();
            }
        }
    }
}
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import org.apache.activemq.broker.jmx.BrokerViewMBean;
import org.apache.activemq.broker.jmx.ConnectionViewMBean;
import org.apache.activemq.broker.jmx.ConnectorViewMBean;

public class JMXCloseAllConsumers {

    public static void main(String[] args) throws Exception {
        JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
        Map<String, String[]> env = new HashMap<>();
        String[] creds = { "admin", "admin" };
        env.put(JMXConnector.CREDENTIALS, creds);
        JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
        MBeanServerConnection conn = jmxc.getMBeanServerConnection();
        ObjectName activeMq = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost");
        BrokerViewMBean mbean = MBeanServerInvocationHandler.newProxyInstance(conn, activeMq, BrokerViewMBean.class,
                true);
        Map<String, String> props = mbean.getTransportConnectors();
        for (Iterator<?> iter = props.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            System.out.println(name);
            ObjectName connector = new ObjectName(
                    "org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName="
                            + name);
            ConnectorViewMBean connectorViewMBean = MBeanServerInvocationHandler.newProxyInstance(conn, connector,
                    ConnectorViewMBean.class, true);
            System.out.println(connectorViewMBean.connectionCount());
            if (connectorViewMBean.connectionCount() > 0) {
                ObjectName conName = new ObjectName(
                        "org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName="
                                + name + ",connectionViewType=clientId,connectionName=*");
                Set connections = conn.queryNames(conName, null);
                Object[] c = connections.toArray();
                for (int s = 0; s < c.length; s++) {
                    ObjectName con = (ObjectName) c[s];
                    System.out.println(con.toString());
                    ConnectionViewMBean connectionView = MBeanServerInvocationHandler.newProxyInstance(conn, con,
                            ConnectionViewMBean.class, true);
                    String address = connectionView.getRemoteAddress();
                    System.out.println(address);
                    connectionView.stop();
                }
                connectorViewMBean.stop();
            }
        }
    }
}