zoukankan      html  css  js  c++  java
  • Rabbit 基于cloud 的配置使用结构流程

    RabbitMq 基于 cloud 配置使用结构图

    RabbitMq 基于 cloud 配置使用流程

    1.在application.yml中配置RabbitMq

    输出/输入>>>连接配置

    spring:
      rabbitmq:
        addresses: 127.0.0.1
        username: rabbitMq
        password: admin

    输出>推送使用配置

    cloud:
      stream:
        bindings:
          userOutput:
            destination: UserSubscription 
            group: user-service
        binders:  #配置绑定器
          defaultRabbit:
            type: rabbit

    输入>监听使用配置

    cloud:
      stream:
        bindings:
          input: #内置的获取消息的通道 , 从topcheer-default中获取消息
            destination: topcheer-default
          output: #指定消息发送的目的地,在rabbitMq中,发送到一个topcheer-default的exchange中
            destination: topcheer-default
          
        userInput:
            destination: UserSubscription
            group: user-service
        #          producer:
        #            partition-key-expression: payload  #分区关键字   对象中的id,对象
        #            partition-count: 2  #分区大小
        binders:  #配置绑定器
          defaultRabbit:
            type: rabbit

    2.Mq推送、监听自定义通道

    输出>推送通道

    import org.springframework.cloud.stream.annotation.Output;
    import org.springframework.messaging.MessageChannel;
    
    /**
     * @Author: 马家立
     * @Date: 2020/10/13 11:56
     * @Description: TODO Mq 输出>推送自定义消息通道
     */
    public interface MyProcessor {
    
        // 用户推送消息通道
        String USEROUTPUT="userOutput";
        @Output(USEROUTPUT)
        MessageChannel userOutput();
    
    }
    View Code

    输入>监听通道

    import org.springframework.cloud.stream.annotation.Input;
    import org.springframework.messaging.MessageChannel;
    
    /**
     * @Author: 马家立
     * @Date: 2020/10/13 11:56
     * @Description: TODO Mq 输入>监听自定义消息通道
     */
    public interface MyProcessor {
    
        // 用户监听消息通道
        String USERINPUT="userInput";
        @Input(USERINPUT)
        MessageChannel userInput();
    
    }
    View Code 

    3.Mq推送、监听使用

    输出>推送使用

    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.cloud.stream.annotation.EnableBinding;
    import org.springframework.integration.support.MessageBuilder;
    import org.springframework.messaging.MessageChannel;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.Resource;
    import java.util.Map;
    
    /**
     * @Author: 马家立
     * @Date: 2020/10/16 11:38
     * @Description: TODO MQ推送
     */
    @Component
    @EnableBinding(MyProcessor.class)
    public class MessageSender {
        /**
        * 用户推送消息通道
        */
        @Resource
        @Qualifier(value=MyProcessor.USEROUTPUT)
        private MessageChannel userOutput;
    
        /**
        * @Author: 马家立
        * @Date: 2020/10/16 11:38
        * @Description: TODO MQ推送
        */
        public void send(Map<String,Object> map) {
            map.put("id","123");
            map.put("param","张三");
            userOutput.send(MessageBuilder.withPayload(map).build());
        }
    
    }
    View Code

    输入>监听使用

    import org.springframework.cloud.stream.annotation.EnableBinding;
    import org.springframework.cloud.stream.annotation.StreamListener;
    import org.springframework.stereotype.Component;
    
    import java.util.Map;
    /**
    * @Author: 马家立
    * @Date: 2020/10/16 11:43
    * @Description: TODO 消息监听器
    */
    @Component
    @EnableBinding(MyProcessor.class)
    public class MessageListener {
    
        /**
        * @Author: 马家立
        * @Date: 2020/10/16 11:43
        * @Description: TODO MQ监听消费
        */
        @StreamListener(MyProcessor.USERINPUT)
        public void userInput(Map<String,Object> map){
            String id = (String) map.get("id");
            String param = (String) map.get("param");
            /**
            * @Description: TODO 以下做消费处理
             * .............................
            */
        }
    
    }
    View Code
  • 相关阅读:
    [MySQL] 联合索引最左前缀原则的原因
    [Go]字符串转int64数值型
    [日常] 浏览器前进后退与数据结构的思想
    [Go] go下实现md5加密
    [PHP] 判断两个数组是否相同
    [Go] goland开启自动格式化和开启go modules
    [PHP] 使用strace排查接口响应速度慢过程
    [Git] git version 2以上git add .和git add -A 一样
    [PHP] 504 Gateway Time-out处理流程
    [GO] go-fly客服系统0.2.2打包编译版下载
  • 原文地址:https://www.cnblogs.com/mjtabu/p/13825419.html
Copyright © 2011-2022 走看看