首先要吐槽下
IntelliJ IDEA,(1)复制到IDEA中的代码即使没有问题也会报错,需要重敲一遍才可以。(2)在pom文件里添加依赖后,有时候需要maven-reimport才能有效。


其次开始这部分的笔记:基于springboot和activemq异步收发消息。
1.
下载activemq压缩包,解压到任意指定目录,bin目录下有win32和win64,结合自己的系统位数进入对应目录启动activemq进程,默认管理界面的访问地址为http://localhost:8161,消息队列连接地址为tcp://localhost:61616
2.
新建springboot项目省略
3.
在pom文件中添加对应activemq版本的activemq-all依赖,比如我的activemq版本是5.15.3,则添加的activemq-all-5.15.3.jar
4.
在application.yml或application.properties中添加
spring:
activemq:
broker-url: tcp://localhost:61616
5.编写activemq配置类
@Configuration
public class ActivemqConfig {
@Value("${spring.activemq.broker-url}")
private String broker_url;
@Bean
public JmsMessagingTemplate jmsMessagingTemplate(){
return new JmsMessagingTemplate(new ActiveMQConnectionFactory(broker_url));
}
@Bean
public JmsListenerContainerFactory<?> containerFactory(){ //配置监听容器工厂
DefaultJmsListenerContainerFactory containerFactory=new DefaultJmsListenerContainerFactory();
containerFactory.setConnectionFactory(new ActiveMQConnectionFactory(broker_url));
containerFactory.setPubSubDomain(true);
return containerFactory;
}
6.
编写消息生产者
@Component
public class TopicProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
public void sendMsg(String destinationName,String msg){
Destination destination=new ActiveMQTopic(destinationName);
jmsMessagingTemplate.convertAndSend(destination,msg);
}
}
7.
编写消息发送服务
@Configuration
@EnableScheduling
public class ScheduleTask {
@Autowired
private TopicProducer topicProducer;
@Scheduled(cron = "0 0/1 * * * ?")
public void sendMsg(){
topicProducer.sendMsg("topic1","i am haha");
}
}
8.
编写消息接收服务
@Component
public class MsgReceiver {
@JmsListener(destination = "topic1",containerFactory = "containerFactory")
public void receiveMsg(String msg){
System.out.println(msg);
}
}
结尾:这是activemq收发消息的简易实现。其中,会有个别jar依赖冲突提示,但并不影响服务运行。