我最近不得不从ActiveMQ 5.X切换到我正在进行的项目的ActiveMQ Artemis。我有一个函数可以读取可用主题并填充MySQL数据库中的表,但该函数不再适用于Artemis中方法的更改。
基本上,我不需要获得可用主题的列表(也称为多播队列),而是需要获得可用地址的列表,以便我的消费者可以连接并为该地址创建一个同名的多播队列。
以下是我需要此功能的原因:
这是我以前在以前的ActiveMQ 5上使用的代码。x:
public class ActiveMQ {
public ActiveMQ(String amq_url) throws JMSException, NamingException{
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(amq_url);
this.connection = (ActiveMQConnection) connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
connection.start();
}
public void useTopic(String topicName) throws JMSException{
this.topic = session.createTopic(topicName);
this.producer = session.createConsumer(topic);
}
public void readAvailableTopics() throws JMSException{
Set<ActiveMQTopic> topics = connection.getDestinationSource().getTopics();
System.out.println(topics.toString());
return topics;
}
readAvailableTopics()方法就是正在讨论的方法。
我在消费者端和生产者端都尝试过.getTopics()和.getQueues(),它们都会返回一个空集。我找不到任何JMS文档来获取可用地址。
任何帮助将不胜感激。
ActiveMQ 5客户端通过咨询消息更新主题和队列列表。由于ActiveMQ Artemis 2.18默认情况下禁用了咨询消息支持,请参阅Artemis-3414。要启用咨询消息支持功能,请将SupportDvisory参数添加到接收器,即。
<acceptor name="artemis">tcp://0.0.0.0:61616?protocols=OPENWIRE;supportAdvisory=true</acceptor>
JMS规范不包括这样的管理操作,因此每个代理实现都有不同的访问方式。ActiveMQ Artemis在许多方面与ActiveMQ“经典”类似,但访问管理操作不同。也就是说,您可以使用JMS调用管理操作。您可以使用如下代码列出所有地址:
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueRequestor;
import javax.jms.QueueSession;
import javax.jms.Session;
...
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
import org.apache.activemq.artemis.api.jms.management.JMSManagementHelper;
import org.apache.activemq.artemis.api.core.management.ResourceNames;
...
QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management");
QueueRequestor requestor = new QueueRequestor(session, managementQueue);
Message m = session.createMessage();
JMSManagementHelper.putOperationInvocation(m, ResourceNames.BROKER, "getAddressNames");
Message reply = requestor.request(m);
boolean success = JMSManagementHelper.hasOperationSucceeded(reply);
if (success) {
Object[] addresses = (Object[]) JMSManagementHelper.getResult(reply);
for (Object address : addresses) {
System.out.println(address);
}
}
问题内容: 当前,提到的用于获取MAC地址的所有解决方案始终使用eth0。但是,如果接口不是以eth0开头,该怎么办呢?同样在OS X上,接口名称也不同。 eth0接口也可能存在但未使用。即不活跃,它没有一个IP。 因此,有没有一种方法可以获取第一个可用接口Active的MAC地址(即,它具有一个inet地址,我什至不希望有人拥有inet6)。 例如 注意:我更改了输出值。 因此,在这种情况下,我
X2.2.0新增 sp_get_user_avatar_url($avatar) 功能: 获取用户头像地址 参数: $avatar: 数据库中保存的用户头像文件路径 返回: 类型string,用户头像地址 使用: $url = sp_get_user_avatar_url('avatart/2231rweqrqwer.png'); echo $url;//输出用户头像地址
我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。
问题内容: 我正在寻找一种方法(使用python)从本地网络上的设备获取地址。 地址是已知的。 目标是建立一个脚本,该脚本将定期轮询IP地址数据库,以确保mac地址没有更改,如果有更改,则将电子邮件警报发送给我自己。 问题答案: 用Python回答问题取决于您的平台。我没有Windows,因此以下解决方案可在我写过的Linux机器上使用。对正则表达式进行小的更改将使其在OS X中运行。 首先,您必
问题内容: 我需要获取运行程序的系统的mac地址。但我无法做到这一点。 我正在编写以下代码: 我得到以下结果: 我没有得到MAC地址,它为空。 我从这里看到了这个例子 问题答案: 如果您考虑了多个接口和一些空MAC地址(我在装有VMWare的Windows 7上运行Java 7(因此我有一些虚拟网络适配器)),那么这段代码似乎可以正常工作: 这是运行它时在计算机上看到的内容(经过消毒的版本): 这
问题内容: 我想获取使用我网站的客户IP地址。我正在使用PHP superglobal: 但是我看到它不能使用此提供正确的IP地址。我得到了我的IP地址,发现它与我的IP地址不同,并且我还可以在某些网站上看到我的IP地址,例如: 我粘贴了提供PHP功能的IP地址,但是此网站未显示任何结果。这个问题是怎么发生的,如何获得客户端的IP地址? 问题答案: 获取访问者/客户的IP地址的最简单方法是使用或变