JavaクライアントプロセスとActive-MQサーバを強制終了せずにActive-MQコンシューマソケットを閉じることによって、特定のシナリオをテストする必要があります。 JAVAクライアントとActive-MQキューの間の特定のソケットを閉じる最も良い方法は何ですか?JAVAクライアントとActive-MQキューの間で特定のソケットを閉じる方法
2
A
答えて
0
多分消費者/プロデューサーのすべてのセッションをクローズするorg.apache.activemq.ActiveMQMessageConsumer.close()
またはorg.apache.activemq.ActiveMQConnection.close()
を呼び出すことによって
あなたのクライアントは、彼のフェールオーバーを使用している場合と考えてください、VisualVMのを使用し、stopメソッドを呼び出すことができます 自動的に再接続する
または以下のようなコード
は、IDによって1人の消費者を閉じますか、[リモート
import java.util.HashMap; 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.ConnectionViewMBean; public class JMXCloseConsumer { 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 conName = new ObjectName( "org.apache.activemq:type=Broker,brokerName=localhost,connector=clientConnectors,connectorName=openwire,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(); } } }
はコネクター名で、すべての消費者を閉じるために、私は生産プラットフォームのコードを変更する必要があり、このため
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();
}
}
}
}
関連する問題
- 1. 特定のソケットを取得して閉じる方法
- 2. 設定方法activemqのキューの監視
- 3. 特定のドキュメントで特定のプロセスを閉じる方法C#
- 4. IOSのクライアントとして特定のクライアントにソケットを送信する方法。
- 5. サーバとクライアントのソケット接続を同時に閉じる
- 6. JavaソケットHTTP 1.0接続を閉じる
- 7. javaを特定のソケット経由でクライアントに接続します。
- 8. Netty - クライアント側のソケットを閉じるとサーバ側のチャネルが閉じられるのですか?
- 9. チャンネル終了/閉じるでソケットを閉じる/閉じる
- 10. Javaソケットを使用してクライアントとサーバ間でファイルを転送する方法
- 11. VBScriptで特定のフォルダを閉じる方法は?
- 12. ActiveMQ Javaブローカー、Pythonクライアント
- 13. activemqのトピックとキューをブリッジする方法
- 14. 特定のURLでSFSafariViewControllerを閉じる
- 15. 特定のキューのActiveMQカスタム再配信ポリシー
- 16. バッチコマンドを使用して特定のファイルを閉じる方法
- 17. Java:例外なくサーバーを停止する(ソケットを閉じる)方法は?
- 18. Javaプログラムから特定のURLのWebブラウザを閉じる
- 19. Java ActiveMQ:クライアントからサーバーにメッセージを送信する方法
- 20. FIN_WAIT_2状態のソケットを閉じる(kill、release?)方法は?
- 21. CamelのActiveMQキュー間でメッセージをデシリアライズなしで移動する
- 22. クライアント(Java、ソケット)から特定のメッセージを受け取ったときに自動返信を返す方法
- 23. 特定の時間間隔でのMule ActiveMQ
- 24. クライアントとサーバ間のメッセージ交換 - Javaのソケット
- 25. 特定のコマンドプロンプトを閉じる
- 26. 特定のアクションが発生したときにeventChannelを閉じる方法
- 27. ソケットC++サーバー/ Javaクライアント経由でintを送信する方法
- 28. ソケットを閉じずにデータが終了したことをクライアントに通知する方法
- 29. ASPxGridView:クライアント側で閉じるイベントを処理する方法は?
- 30. javax.mail.Messageのカスタムカスタムオブジェクトをjmsキューに入れる方法(Activemqを使用)
それは許可されていません。外部ユニットのJavaクラスまたは* nixコマンドからそれを削除する必要があります。 – Mrityunjay
私は自分の答えを更新しました。クライアントがフェールオーバーを使用している場合、自動的に再接続することを考慮してください –