Java ActiveMQ发布已完成,但在队列中未看到任何消息

Java ActiveMQ发布已完成,但在队列中未看到任何消息,java,jms,activemq,spring-jms,jmstemplate,Java,Jms,Activemq,Spring Jms,Jmstemplate,更新:我切换到另一个队列,我可以看到我的消息,正如预期的那样。这意味着我尝试的初始队列有些不同。它没有任何消费者。什么会导致队列在web控制台中不显示任何消息 我正在尝试将我的电子邮件对象发布到我的ActiveMQ队列。我的主代码在没有错误的情况下成功运行,并获得“成功连接到代理”输出。但是,我检查了ActiveMQ网站实例上的队列,没有任何消息。队列中没有使用者 Email没有实现Serializable,但这应该不是问题,因为我提供了一个Jackson JSONMessageConverte

更新:我切换到另一个队列,我可以看到我的消息,正如预期的那样。这意味着我尝试的初始队列有些不同。它没有任何消费者。什么会导致队列在web控制台中不显示任何消息

我正在尝试将我的
电子邮件
对象发布到我的ActiveMQ队列。我的主代码在没有错误的情况下成功运行,并获得“成功连接到代理”输出。但是,我检查了ActiveMQ网站实例上的队列,没有任何消息。队列中没有使用者

Email
没有实现
Serializable
,但这应该不是问题,因为我提供了一个Jackson JSON
MessageConverter
(即使存在序列化问题,我认为也会有错误)。我甚至尝试发布一个简单的
“test msg”
字符串,但仍然没有看到任何消息

为什么我发布后无法在网站上看到队列中的消息

@Configuration
@EnableJms
public class EmailMessagingConfiguration {
    @Value(ConfigConstants.ACTIVEMQ_EMAIL_BROKER_URL_KEY)
    private String brokerUrl;

    @Value(ConfigConstants.ACTIVEMQ_EMAIL_MAIN_MESSAGE_QUEUE_KEY)
    private String queueName;

    @Value(ConfigConstants.ACTIVEMQ_EMAIL_USERNAME_KEY)
    private String userName;

    @Value(ConfigConstants.ACTIVEMQ_EMAIL_PASSWORD_KEY)
    private String password;


    @Bean
    public ConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(brokerUrl);
        connectionFactory.setUserName(userName);
        connectionFactory.setPassword(password);
        return connectionFactory;
    }

    @Bean // Serialize message content to json using TextMessage
    public MessageConverter jacksonJmsMessageConverter() {
        MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
        converter.setTargetType(MessageType.TEXT);
        return converter;
    }

    @Bean
    public JmsTemplate jmsTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setConnectionFactory(connectionFactory);
        jmsTemplate.setMessageConverter(messageConverter);
        jmsTemplate.setDefaultDestinationName(queueName);
        return jmsTemplate;
    }

}
出版者

@Component
public class EmailPublisher {

    @Autowired
    JmsTemplate jmsTemplate;

    public void publish(final Email email) {
        jmsTemplate.convertAndSend(email);
        jmsTemplate.convertAndSend("test msg");
    }
}
主要方法(试验)


只要有MessageConverter,就不需要Serializable。我完全尝试了你的配置,它在我这边起作用。请您提供一个配置常量的示例。没有使用者,因为没有JmsListener侦听您的队列,至少我从这些配置中看不到provided@Chris我说没有消费者,所以我应该能够在web控制台上看到发送到队列的任何消息。我不认为配置常量有什么问题。Terminally说我成功地连接到了代理,之后就没有输出了。我很抱歉误解了你的消费者部分。不管怎样,您是否尝试过在不使用junit测试的情况下运行它?我复制了您的整个代码,并相应地更改了队列配置,它确实能够发送(在队列控制台:8161检查),因此我认为上述代码没有任何问题。
@SpringBootTest
@Import({EmailMessagingConfiguration.class})
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfiguration.class)
public class EmailPublisherTest {


    @Autowired
    private EmailPublisher emailPublisher;

    @Test
    public void testPublishEmail() {
        Email email = new Email();
        email.setSubject("foo");
        email.setSender(new User("a@gmail.com"));

        emailPublisher.publish(email);
    }
}