• Springboot整合ActiveMQ


    一、ActiveMQ的安装

    1. 下载地址

    ActiveMQhttps://activemq.apache.org/download-archives

    2. 安装

    下载后的压缩包(apache-activemq-5.15.8-bin.zip)解压缩就可以

    3. 启动服务

    3.1 D:\Software\activemq\bin\win64目录下的activemq.bat双击启动服务

    这样代表成功。也可以在浏览器中请求http://localhost:8161/ 

    3.2 activemq启动报错

    WrapperSimpleApp: Unable to locate the class org.apache.activemq.console.Main: java.lang.Unsupported

    说明 ActiveMQ的版本与java的版本不兼容,换成低版本的ActiveMQ。我就是遇到ActiveMQ 5.17.2 Release 版本报此错,换成apache-activemq-5.15.8版本就不再抛异常。

    二、 Springboot整合ActiveMQ步骤

    2.1 导入坐标

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-activemqartifactId>
    4. dependency>

    2.2 配置

    1. spring:
    2. activemq:
    3. broker-url: tcp://127.0.0.1:61616
    4. jms:
    5. pub-sub-domain: true #开启发布订阅模式,默认不开启

    2.3 生产者与消费者消息(使用默认消息存储队列)

    1. @Service
    2. public class MessageServiceActiveMqImpl implements MessageService {
    3. @Autowired
    4. private JmsMessagingTemplate messagingTemplate; //消息的类
    5. @Override
    6. public void sendMessage(String id) {
    7. //生产消息
    8. messagingTemplate.convertAndSend("order.queue.id",id); //convertAndSend把生产的消息转化成统一格式
    9. System.out.println("待发送短信订单:"+id);
    10. }
    11. @Override
    12. public String getMessage() {
    13. //receiveAndConvert接收消息,这是单个手动接收,一般使用监听器对消息队列进行接收
    14. String id = messagingTemplate.receiveAndConvert("order.queue.id",String.class);//把消费的消息转化成指定的格式
    15. System.out.println("订单短信发送完成:"+id);
    16. return id;
    17. }
    18. }
    1. public void convertAndSend(String destinationName, Object payload) throws MessagingException {
    2. this.convertAndSend(destinationName, payload, (Map)null);
    3. }
    4. /*注:第一个参数表示消息来源,自己命名,生产和消费需要是同一个;
    5. 第二个参数表示消息
    6. */
    7. @Nullable
    8. public T receiveAndConvert(String destinationName, Class targetClass) throws MessagingException {
    9. Message message = this.doReceive(destinationName);
    10. return message != null ? this.doConvert(message, targetClass) : null;
    11. }

    2.4 使用消息监听器对消息队列监听

    在service包下建立listener包,创建MessageListener类。收到消息后自动消费。

    1. @Component //Spring管理
    2. @Slf4j
    3. public class MessageListener {
    4. @JmsListener(destination = "order.queue.id")
    5. public void receive(String id){
    6. System.out.println("已完成短信发送业务,id:" + id);
    7. log.info("已完成短信发送业务,id:" + id);
    8. }
    9. }

    三、生产和消费的消息状态 

    生产和消费的消息状态都可以在http://127.0.0.1:8161/admin/
    的queues或topics菜单下查询到,取决于pub-sub-domain: true #开启发布订阅模式,默认不开启。不开启在queues下。开启在topics下

     

  • 相关阅读:
    【线性代数】二次型总结
    常用的Java日志框架:Log4j、SLF4J和Logback
    okcc呼叫中心语音失真是常见通话问题?
    Shell Protocol空投价值几何,一文带你详细分析
    系统部署常用操作_查看硬盘大小_查看内存情况_查看某个端口是否被占用_telnet_远程scp复制拉取---Linux运维工作笔记055
    视频亮度太低了,如何调高
    ResourceBundleViewResolver类简介说明
    多线程之异步模式工作线程
    C#学习笔记--复杂数据类型、函数和结构体
    Python基础内容训练9(文件操作)
  • 原文地址:https://blog.csdn.net/weixin_51725434/article/details/127832356