Попробуйте этот код:
Collection<Employee> nonDuplicatedEmployees = employees.stream()
.<Map<Integer, Employee>> collect(HashMap::new,(m,e)->m.put(e.getId(), e), Map::putAll)
.values();
Для вашего потребительского приложения вам нужно добавить 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 для достижения того же эффекта.
Вы можете прочитать об этом здесь
containerFactory = "jmsListenerContainerFactory"
в качестве параметра в аннотации@JmsListener
. – ITWorker 13 July 2018 в 19:52