发布到 ActiveMQ 主题不起作用

Publishing to ActiveMQ topic doesn't work

我在 java 中写了一个 Publisher class 以便通过主题发送消息。

package com.jms.jms_ps;

import java.util.Properties;
import javax.naming.*;
import javax.jms.*;

/**
 *
 * @author achref
 */
public class Publisher {
    
    Context ctx;
    TopicConnectionFactory connectionFactory;
    Topic topic;
    TopicConnection connection;
    TopicSession session;
    
    TopicPublisher publisher;
    
    
    Publisher() throws NamingException{
        Properties props = new Properties();
        props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
            props.setProperty(Context.PROVIDER_URL, "tcp://localhost:61616");
            
        ctx = new InitialContext(props);
        
        connectionFactory = (TopicConnectionFactory) ctx.lookup("ConnectionFactory");
        topic = (Topic) ctx.lookup("dynamicTopics/myTopic");
        
    }
    
    void sendTextMessage(String msg) throws JMSException{
        connection = connectionFactory.createTopicConnection();
        session = connection.createTopicSession(true, 0);
        publisher = session.createPublisher(topic);
        
        TextMessage message = session.createTextMessage();
        message.setText(msg);
        
        connection.start();
        publisher.publish(message);
        connection.close();
        
    }
    
}

问题是每次我尝试发送消息时,它都没有添加到我的主题中(Messages Enqueued 等于零),因此订阅者什么也收不到。 ActiveMQ console

您正在以交易模式发送消息,但未提交交易。 Ack 模式 = 0 是 Session.TRANSACTED。您需要调用 session.commit() 以允许代理向主题传递消息,或者为您的用例选择不同的确认模式。