Как создать пользователя Spring Boot для очереди ActiveMQ?

Попробуйте этот код:

Collection<Employee> nonDuplicatedEmployees = employees.stream()
   .<Map<Integer, Employee>> collect(HashMap::new,(m,e)->m.put(e.getId(), e), Map::putAll)
   .values();
0
задан ITWorker 13 July 2018 в 19:11
поделиться

1 ответ

Для вашего потребительского приложения вам нужно добавить Factory Connection & amp; JMS-приемник сообщений для вашего потребительского JMS-шаблона для начала приема сообщений.

@Configuration
@EnableJms
public class ConsumerConfig {

  @Value("${activemqbrokerurl}")
  private String brokerUrl;

  @Bean
  public ActiveMQConnectionFactory activeMQConnectionFactory() {
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
    activeMQConnectionFactory.setBrokerURL(brokerUrl);
    return activeMQConnectionFactory;
  }

  @Bean
  public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(activeMQConnectionFactory());
    factory.setConcurrency("{#setDesiredConcurrency}");
    return factory;
  }
}

MessagListenerContainer Spring должен использоваться для потребления сообщений. Это обеспечивает всю мощь MDB - эффективное потребление JMS и объединение слушателей сообщений - но без необходимости использования полного контейнера EJB. Вы можете использовать activemq-pool org.apache.activemq.pool.PooledConnectionFactory для эффективного объединения соединений и сеансов для вашей коллекции потребителей, или вы можете использовать Spring JMS org.springframework.jms.connection.CachingConnectionFactory для достижения того же эффекта.

Вы можете прочитать об этом здесь

0
ответ дан Amith Kumar 17 August 2018 в 12:15
поделиться
  • 1
    Это сработало после добавления containerFactory = "jmsListenerContainerFactory" в качестве параметра в аннотации @JmsListener. – ITWorker 13 July 2018 в 19:52
Другие вопросы по тегам:

Похожие вопросы: