springboot 整合 activemq 配置方式
参考文章连接 https://segmentfault.com/a/1190000011190467
pom.xml 依赖调整 引入activemq 整合依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
自定义activemq 的brokerurl地址username、password 等信息
## ---active mq 配置---- activemq: broker-url: tcp://10.20.30.111:61616 user: admin password: admin pool: enabled: true max-connections: 10
自定义activemq的配置类
@Configuration public class MyActiveMqConfiguration {
@Value("${spring.activemq.user}") private String usrName; @Value("${spring.activemq.password}") private String password; @Value("${spring.activemq.broker-url}") private String brokerUrl; // 使用生产消息时配置 //@Value("${spring.activemq.queueName}") //private String queueName; // //@Value("${spring.activemq.topicName}") //private String topicName; //@Bean //public Queue queue(){ // return new ActiveMQQueue(queueName); //} // //@Bean //public Topic topic(){ // return new ActiveMQTopic(topicName); //} @Bean public ActiveMQConnectionFactory connectionFactory() { return new ActiveMQConnectionFactory(usrName, password, brokerUrl); } @Bean public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ActiveMQConnectionFactory connectionFactory){ DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setConnectionFactory(connectionFactory); return bean; } @Bean public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory){ DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); //设置为发布订阅方式, 默认情况下使用的生产消费者方式 bean.setPubSubDomain(true); bean.setConnectionFactory(connectionFactory); return bean; } @Bean public JmsMessagingTemplate jmsMessagingTemplate(ActiveMQConnectionFactory connectionFactory){ return new JmsMessagingTemplate(connectionFactory); }
}
4.定义activemq的消费者
/**
* activemq 消费者
*/
@Component
public class ActiveMqConsumer {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private IItfImplogHeaderService iItfImplogHeaderService;
/**
* queue 点对点
*/
@JmsListener(destination = "erp_to_wms_ship_queue_test", containerFactory = "jmsListenerContainerQueue")
public void updateOutboundNoticeFromTMS(String message) {
if (logger.isInfoEnabled()) {
logger.info("ActiveMqConsumer.updateOutboundNoticeFromTMS ---->start");
}
iItfImplogHeaderService.updateOutboundNoticeFromTMS(message);
}
///**
// * topic 订阅者消费
// */
//@JmsListener(destination = "", containerFactory = "jmsListenerContainerTopic")
//public void messageFromTopic() {
//
//}
}
5.定义activemq的生产者
@Component
@EnableScheduling
public class producer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
@Autowired
private Topic topic;
private static int count= 0;
@Scheduled(fixedDelay=3000)
public void send(){
this.jmsMessagingTemplate.convertAndSend(this.queue,"hi.activeMQ,index="+count);
this.jmsMessagingTemplate.convertAndSend(this.topic,"hi,activeMQ( topic ),index="+count++);
}
}
至此,activemq就与springboot 整合了。。。