【发布时间】:2022-12-03 02:40:23
【问题描述】:
我有一个似乎不受 Quarkus 支持的 ActiveMQ 队列。当我尝试使用 here 描述的 Quarkus JMS 实现时,出现以下错误:
AMQP SASL header mismatch value 0, expecting 41. In state: HEADER0
我假设这是因为 ActiveMQ 服务器不支持 AMQP。我编写的代码尝试连接到 ActiveMQ 服务器。
ConnectionFactory connectionFactory = new ConnectionFactory();
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("inQue");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
messageMap = session.createMapMessage();
虽然以上不起作用。如果我将其更改为使用
来自 ActiveMQ 的 ActiveMQConnectionFactory 它工作得很好:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
connection = connectionFactory.createConnection("admin", "admin");
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("inQue");
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
messageMap = session.createMapMessage();
但是,如果我更改为 ConnectionFactory 的 Quarkus 版本,它就不再有效,并且出现上述错误。那么有可能以某种方式解决这个问题吗?或者我需要使用ActiveMQConnectionFactory吗?如果是这样,我怎样才能让 Quarkus 注册我的MessageListener?现在,为了测试,我写:
MessageListener listener = new MyListener();
consumer.setMessageListener(listener);
但我希望 Quarkus 在应用程序启动时执行此操作。但我不确定该怎么做。
【问题讨论】:
-
您使用的是哪个版本的 ActiveMQ?