流式消息_spring-cloud-starter-stream-rocketmq发送消息_v1.0.1

文件名称版本号作者qq组件版本
流式消息_spring-cloud-starter-stream-rocketmq发送消息v1.0.1学生宫布8416837SpringBoot 2.1.8.RELEASE
spring-cloud-starter-stream-rocketmq 2.1.1.RELEASE

简介

说明

通道式发布|订阅,如果更换消息中间件技术栈,勿须改动代码。

模式

发布

代码
  1. 引入依赖,以及其它相关类,当前假设已经有完整项目
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
        </dependency>
  1. 在配置文件配置,或yaml文件:
spring.cloud.stream.rocketmq.binder.name-server=ipv4:9876
# 相当于topic
spring.cloud.stream.bindings.output.destination=zhangsan_msg
spring.cloud.stream.bindings.output.group=zhangsan_msg_group_001
# 订阅
# 相当于topic
# spring.cloud.stream.bindings.input.destination=zhangsan_msg
# spring.cloud.stream.bindings.input.group=lisi-group-consumer_9527
  1. 通道类
package org.springframework.cloud.stream.messaging;

import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;

public interface Source {
	// output与配置对应 ...bindings.output...
    String OUTPUT = "output";

    @Output(OUTPUT)
    MessageChannel output();
}
  1. 启动类加注解,也可加载在业务类上面
// 可以绑定多个
@EnableBinding({Source.class, Xxx.class, Xyy.class})
  1. 生产代码,【注意】下文output与配置文件、interface文件里的output名称保持一样:
	@Resource
    private MessageChannel output;
    ... ....
    // 函数内
    ret = output.send(MessageBuilder.withPayload("cc-使用通道-MessageChannel模式发送消息".concat(msg)).build());
  1. 发送成功,在ng控制台查看:
    在这里插入图片描述

订阅 同理 不过代码有不同

代码
  1. 配置
# 订阅
# 相当于topic
spring.cloud.stream.bindings.input.destination=zhangsan_msg
spring.cloud.stream.bindings.input.group=lisi-group-consumer_9527

spring.cloud.stream.bindings.ccWriteInput.destination=cc_msg
spring.cloud.stream.bindings.ccWriteInput.group=user-group-consumer_9528
  1. 通道类,【提示】CCInputOutput.java可以写多个output、input,注意名称对应即可:
public interface CCInputOutput {
    String OUTPUT_CC_WRITE = "ccWriteOutput";

    @Output(OUTPUT_CC_WRITE)
    MessageChannel ccWriteOutput();

    String INPUT_CC_WRITE = "ccWriteInput";

    @Input(INPUT_CC_WRITE)
    SubscribableChannel ccWriteInput();
}
  1. 生产和消费代码

生产

	@Resource
    MessageChannel ccWriteOutput;
    ... ...
	    User u1 = new User();
        u1.setIdNumber("123789");
        u1.setFullName("罗士信");
        u1.setAddress("河西走廊");
        boolean ret = ccWriteOutput.send(MessageBuilder.withPayload(u1).build());

消费

	// 上文的INPUT_CC_WRITE
	@StreamListener(CCInputOutput.INPUT_CC_WRITE)
    public void receive(String messageBody){

        log.debug("通过stream收到消息,messageBody:{}", messageBody);
        // 处理messageBody 略
        ... ...
  1. 成功收到消息:
    在这里插入图片描述
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值