<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
@Component
public class MessageProducer {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT);
jmsTemplate.send("queueName", session -> {
TextMessage textMessage = session.createTextMessage();
textMessage.setText(message);
return textMessage;
});
}
}
@Component
public class MessageConsumer implements MessageListener {
@Override
public void onMessage(Message message) {
}
}
@Configuration
@EnableJms
public class JmsConfig {
@Autowired
private ConnectionFactory connectionFactory;
@Autowired
private MessageConsumer messageConsumer;
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
return factory;
}
@Bean
public JmsListenerContainerFactory<?> customJmsListenerContainerFactory(DefaultJmsListenerContainerFactory jmsListenerContainerFactory) {
jmsListenerContainerFactory.setMessageConverter(jacksonJmsMessageConverter());
return jmsListenerContainerFactory;
}
@Bean
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("type");
return converter;
}
@Bean
public MessageListenerContainer messageListenerContainer(JmsListenerContainerFactory<?> jmsListenerContainerFactory) {
DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setDestinationName("queueName");
container.setMessageListener(messageConsumer);
return container;
}
}