登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. 未分类
  3. 正文

spring cloud stream 4.0与rabbitmq集成测试

2024-01-23

spring cloud stream升级到4.0版本后,消息收发的方式和以前有较大的差异,经过测试后,总结见下:

一、基本集成

application.yml内容见下:


spring:
  profiles:
    active: dev
  application:
    name: iios-keystone-broker-service
  #配置中心
  cloud:

    stream:
      rabbit:
        bindings:
          yypOutput-out-0:
            # 生产者配置信息
            producer:
              # 生产者使用的交换机类型   如果已存在交换机名称,该类型必须与交换机类型一致
              exchangeType: direct
              # 用于指定 routing key 表达式
              routing-key-expression: headers["routeTo"] # 该值表示使用头信息的routeTo字段作为 routing key
              queueNameGroupOnly: true
          yypInput-in-0:
            # 消费者配置信息
            consumer:
              # 消费者使用的交换机类型   如果已存在交换机名称,该类型必须与交换机类型一致
              exchangeType: direct
              # 消息确认模式   具体查看AcknowledgeMode
              acknowledge-mode: none
              #queueNameGroupOnly: true
      bindings:
        yypOutput-out-0: #通道的名称
          destination: yyp-test-001 #要使用的exchange名称
          content-type: application/json
          default-binder: iios_rabbit
        yypInput-in-0: #通道的名称
          destination: yyp-test-001 #要使用的exchange名称
          #content-type: application/json
          default-binder: iios_rabbit
          group: yyp-test-001-queue-001 # 要使用的消息队列名称

      binders:
        iios_rabbit:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: 192.168.1.1
                port: 
1312
                username: tiAAAAA
                password: gd6pFWQFEQEQFEW
                virtual-host: /

 

发送消息的代码


    @GetMapping("/stream/{name}")
    public String sendMsg(@PathVariable String name) {
        String uuid = UUID.fastUUID().toString();
        streamBridge.send("rec-obj", JSONUtil.toJsonStr(new Person(name)));
        streamBridge.send("rec-str", uuid);

        streamBridge
                .send("yypOutput-out-0", MessageBuilder.withPayload("hello world!".getBytes(StandardCharsets.UTF_8))
                        .setHeader("routeTo", "routingkey-yyp-01").build());
        return uuid;
    }

接收消息的代码

@Service
@Slf4j
public class RCom {

    @Bean
    public Consumer<Message<byte[]>> yypInput() throws IOException {
        return message -> {
            String routingKey = String.valueOf(message.getHeaders().get("amqp_receivedRoutingKey"));
            byte[] payload = message.getPayload();
            String str = new String(payload, StandardCharsets.UTF_8);
            log.info("yypInput Rev:"+str+"routingKey:"+routingKey);
        };

    }
标签: 暂无
最后更新:2024-01-23

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号