我对 JMS 和 Artemis 的世界还很陌生,我正在努力利用管理 API 将 JMS 消息发送到我的独立代理。
我使用的是 Artemis 2.38
我想在不使用 broker.xml 的情况下更新地址设置,但我一直只得到 null 作为回复,而且当我去测试它们时设置显然没有改变。
我按照这里的类似帖子做了,并想出了这段代码。这里
try (JMSContext context = activeMQConnectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE)) {
//You MUST explicitly create this queue for management operations.
Queue managementQueue = context.createQueue("activemq.management");
Message message = context.createMessage();
JMSManagementHelper.putOperationInvocation(
message,
ResourceNames.BROKER, // Targetted Resource
"addAddressSettings", // Operation to invoke
"ri.trips1", // Address match
null, // Dead letter address (DLA)
null, // Expiry address
-1L, // Expiry delay
true, // Last value queue
7, // Max delivery attempts
-1L, // Max size bytes
0, // Page size bytes
-1, // Page max cache size
1000L, // Redelivery delay
1.0, // Redelivery multiplier
-1L, // Max redelivery delay
-1L, // Slow consumer threshold
false, // Slow consumer policy
null, // Slow consumer notification interval
-1L, // Min large message size
-1L, // Consumer window size
null, // Auto-create queues
true, // Auto-create addresses
false, // Auto-delete queues
false, // Auto-delete addresses
true // Auto-delete created queues
);
context.createProducer().send(managementQueue, message);
Message response = context.createConsumer(managementQueue).receive(5000);
if (response != null && JMSManagementHelper.hasOperationSucceeded(response)) {
System.out.println("Address settings applied successfully.");
} else {
System.err.println("Failed to apply address settings");
}
} catch (JMSException e) {
e.printStackTrace();
}
此处的代码块始终解析为失败,因为响应始终为空。但是它可以正常创建地址“activemq.management”。
我使用的是 Artemis 2.38
任何帮助都将不胜感激!