基于springboot和activemq异步收发消息

首先要吐槽下 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依赖冲突提示,但并不影响服务运行。

你可能感兴趣的:(Spring,Java,web,activemq)