国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

springboot整合RabbitMQ發(fā)送短信的實(shí)現

發(fā)布時(shí)間:2021-07-05 18:40 來(lái)源:腳本之家 閱讀:0 作者:UnityAlvin 欄目: 開(kāi)發(fā)技術(shù)

目錄

    RabbitMQ安裝和運行

    # 安裝
    rpm -ivh erlang-21.3.8.9-1.el7.x86_64.rpm 
    rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm 
    rpm -ivh rabbitmq-server-3.8.1-1.el7.noarch.rpm 
    
    # 卸載
    #rpm -qa | grep rabbitmq
    
    # 啟用管理插件
    rabbitmq-plugins enable rabbitmq_management
    
    # 啟動(dòng)RabbitMQ
    systemctl start rabbitmq-server.service
    #systemctl status rabbitmq-server.service
    #systemctl restart rabbitmq-server.service
    #systemctl stop rabbitmq-server.service
    
    # 查看進(jìn)程
    ps -ef | grep rabbitmq
    

    默認的用戶(hù)密碼,guest/guest,不允許遠程連接,需要添加管理員賬戶(hù)

    # 添加管理員賬號密碼
    rabbitmqctl add_user admin admin
    
    # 分配賬號角色
    rabbitmqctl set_user_tags admin administrator
    
    # 修改密碼(需要修改一次密碼,否則無(wú)法登錄)
    rabbitmqctl change_password admin 123456
    
    # 查看用戶(hù)列表
    rabbitmqctl list_users
    
    

    使用新賬號(admin/123456)登錄:http://虛擬機ip:15672

    MQ服務(wù)器設置

    創(chuàng )建用戶(hù)

    創(chuàng )建用戶(hù) srbuser,配置管理員權限

    創(chuàng )建虛擬機

    創(chuàng )建虛擬機 /srbhost,在Set permission中為新建的用戶(hù)分配訪(fǎng)問(wèn)虛擬機 /srbhost 和 / 的權限

    實(shí)現發(fā)送短信

    rabbit-mq

    1、創(chuàng )建模塊

    srb下創(chuàng )建rabbit-mq模塊

    2、pom

    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-amqp</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>fastjson</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    		</dependency>
    	</dependencies>
    

    3、創(chuàng )建MQConfig

    MQConfig.java

    package com.indi.srb.rabbitutil.config;
    
    @Configuration
    public class MQConfig {
        @Bean
        public MessageConverter messageConverter(){
            // json字符串轉換器
            return new Jackson2JsonMessageConverter();
        }
    }
    

    4、創(chuàng )建MQConst

    MQConst.java

    package com.indi.srb.rabbitutil.constant;
    
    public class MQConst {
        public static final String EXCHANGE_TOPIC_SMS = "exchange.topic.sms";//交換機
        public static final String ROUTING_SMS_ITEM = "routing.sms.item";//路由
        public static final String QUEUE_SMS_ITEM  = "queue.sms.item";//消息隊列
    }
    

    5、創(chuàng )建MQService

    MQService.java

    package com.indi.srb.rabbitutil.service;
    
    @Service
    @Slf4j
    public class MQService {
        @Resource
        private AmqpTemplate amqpTemplate;
    
        /**
         * 發(fā)送消息
         * @param exchange  交換機
         * @param routingKey    路由
         * @param message   消息
         * @return
         */
        public boolean sendMessage(String exchange,String routingKey, Object message){
            log.info("發(fā)送消息");
            amqpTemplate.convertAndSend(exchange,routingKey,message);
            return true;
        }
    }
    

    service-base

    dto

    SmsDTO.java

    package com.indi.srb.base.dto;
    
    @Data
    @ApiModel(description = "短信")
    public class SmsDTO {
        @ApiModelProperty(value = "手機號")
        private String mobile;
    
        @ApiModelProperty(value = "消息內容")
        private String message;
    }
    

    service-core中發(fā)送消息

    1、pom

    		<!-- 需要依賴(lài)rabbit-mq -->
    		<dependency>
    			<groupId>com.indi</groupId>
    			<artifactId>rabbit-mq</artifactId>
    			<version>1.0-SNAPSHOT</version>
    		</dependency>
    

    2、yml

    application.yaml

      #spring:
      rabbitmq:
        host: 虛擬機ip
        port: 5672
        virtual-host: /srbhost
        username: srbuser
        password: 123456
    

    3、UserInfoService

    UserInfoService.java

        // 根據bindCode獲取手機號
    	String getMobileByBindCode(String bindCode);
    

    UserInfoServiceImpl.java

        @Override
        public String getMobileByBindCode(String bindCode) {
            QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
            queryWrapper.select("mobile").eq("bind_code",bindCode);
            UserInfo userInfo = baseMapper.selectOne(queryWrapper);
            return userInfo.getMobile();
        }
    

    4、向MQ發(fā)送消息

    UserAccountServiceImpl.java 充值回調方法的最后添加發(fā)送消息的代碼

        @Resource
        private UserInfoService userInfoService;
    
        @Resource
        private MQService mqService;
    
        @Transactional(rollbackFor = Exception.class)
        @Override
        public String notify(Map<String, Object> paramMap) {
            log.info("發(fā)消息");
            String mobile = userInfoService.getMobileByBindCode(bindCode);
            SmsDTO smsDTO = new SmsDTO();
            smsDTO.setMobile(mobile);
            smsDTO.setMessage("充值成功");
            mqService.sendMessage(MQConst.EXCHANGE_TOPIC_SMS,MQConst.ROUTING_SMS_ITEM,smsDTO);
            return "success";
        }
    

    service-sms中監聽(tīng)消息

    1、pom

    		<!-- 需要依賴(lài)rabbit-mq -->
    		<dependency>
    			<groupId>com.indi</groupId>
    			<artifactId>rabbit-mq</artifactId>
    			<version>1.0-SNAPSHOT</version>
    		</dependency>
    

    2、yml

    application.yml

      #spring:
      rabbitmq:
        host: 虛擬機ip
        port: 5672
        virtual-host: /srbhost
        username: srbuser
        password: 123456
    

    3、創(chuàng )建MQ監聽(tīng)器

    SmsReceiver.java

    package com.indi.srb.sms.receiver;
    
    @Component
    @Slf4j
    public class SmsReceiver {
        @Resource
        private SmsService smsService;
    
        // 此處的exchange與key必須與發(fā)消息傳的一致
        @RabbitListener(bindings = @QueueBinding(
                value = @Queue(value = MQConst.QUEUE_SMS_ITEM, durable = "true"),
                exchange = @Exchange(value = MQConst.EXCHANGE_TOPIC_SMS),
                key = {MQConst.ROUTING_SMS_ITEM}
        ))
        public void send(SmsDTO smsDTO) throws IOException {
            log.info("SmsReceiver 消息監聽(tīng)");
            Map<String, Object> param = new HashMap<>();
            param.put("code", smsDTO.getMessage());
            smsService.send(smsDTO.getMobile(), SmsProperties.TEMPLATE_CODE, param);
        }
    }
    
    

    測試

    完成充值之后,登錄的用戶(hù),手機上會(huì )收到充值成功的短信提醒。



    到此這篇關(guān)于springboot整合RabbitMQ發(fā)送短信的實(shí)現的文章就介紹到這了,更多相關(guān)springboot RabbitMQ發(fā)送短信內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

    韩国的无码AV看免费大片在线| 最好看的2019中文大全电影| 少妇无码AV无码一区| 国产精品白丝AV网站| 国产A∨国片精品青草视频| 日本无遮挡吸乳呻吟视频|