【发布时间】:2022-02-10 23:29:44
【问题描述】:
我正在为 AmazonMQ 编写一个简单的 Java JMS QueueBrowser 客户端,它使用 stomp 协议在 ssh 上运行 ActiveMQ(因此他的传输是 stomp+ssl :
// java
import java.util.Enumeration;
// jms
import javax.jms.IllegalStateException;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.ConnectionFactory;
import javax.jms.Connection;
// activemq
import org.apache.activemq.ActiveMQConnectionFactory;
public class QueueBrowserExample {
public static void main(String[] args) throws Exception {
System.out.println("init");
try {
final String PORT = "61616";
final String PROTOCOL = "stomp+ssl";
final String HOST = "xxx.mq.us-east-1.amazonaws.com";
final String connectionString = PROTOCOL + "://" + HOST + ":" + PORT;
System.out.println("attempt to connect to " + connectionString);
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(connectionString);
Connection connection = connectionFactory.createConnection("admin", "admin");
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("Test");
QueueBrowser queueBrowser = session.createBrowser(queue);
Enumeration msgs = queueBrowser.getEnumeration();
} catch (Exception e) {
e.printStackTrace();
}
}
}
由于使用了传输,我得到了javax.jms.JMSException execepion(我假设是stomp+ssl)
javax.jms.JMSException: Could not create Transport. Reason: java.lang.IllegalArgumentException: Invalid connect parameters: {wireFormat.host=b-02b566af-1f0d-4d48-ad24-229a813a53fb-1.mq.us-east-1.amazonaws.com}
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:319)
at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:332)
at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:253)
at QueueBrowserExample.main(QueueBrowserExample.java:37)
Caused by: java.lang.IllegalArgumentException: Invalid connect parameters: {wireFormat.host=b-02b566af-1f0d-4d48-ad24-229a813a53fb-1.mq.us-east-1.amazonaws.com}
at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:122)
at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:64)
at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:317)
... 3 more
ActiveMQ 后端正在使用 STOMP,我无权访问它。因此,我必须弄清楚如何“管理”队列(只看消息,不处理),然后我来到了 QueueBrowser 和 JMS。
【问题讨论】:
标签: java activemq stomp amazon-mq