可能是由于Qpid JMS客户端使用默认的异步发送模式导致消息卡住。可以通过以下示例代码将消息生产者设置为同步发送模式来解决此问题:
ConnectionFactory factory = new JmsConnectionFactory(url); //创建连接工厂 Connection connection = factory.createConnection(); //创建连接 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建会话 Destination destination = session.createQueue("myQueue"); //创建目的地 MessageProducer producer = session.createProducer(destination); //创建消息生产者 producer.setDeliveryMode(DeliveryMode.PERSISTENT); //设置消息持久化 producer.setDeliveryDelay(30000); //设置消息发送延迟(可选)
//设置同步发送模式 producer.setDeliveryMode(DeliveryMode.SYNC); producer.send(message); //发送消息
//关闭连接 producer.close(); session.close(); connection.close();