Публикация ActiveMQ завершена, но в очереди нет сообщений - PullRequest
0 голосов
/ 18 мая 2018

Обновление: я переключился на другую очередь и вижу свои сообщения, как и ожидалось.Так что это означает, что в начальной очереди, которую я пробовал, есть что-то другое.У него нет потребителей.Что может привести к тому, что в очереди не будет отображаться никаких сообщений в веб-консоли?

Я пытаюсь опубликовать свой объект Email в своей очереди 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");
    }
}

Основной метод (тест)

@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);
    }
}
...