SpringCloud Stream集成Rocketmq

本文介绍了如何在SpringCloud Stream中集成RocketMQ,包括引入依赖、配置application.properties、设置消费者和生产者的通道名称,并提供了消费者和生产者的代码实现。

SpringCloud Stream集成Rocketmq

首先需要引入依赖包

项目使用gradle进行构建依赖包如下:

//spring cloud stream

compile('com.alibaba.cloud:spring-cloud-starter-stream-rocketmq:2.2.1.RELEASE')

application.properties配置如下

#rocketmq服务地址,集群多台用';'分隔

spring.cloud.stream.rocketmq.binder.name-server=127.0.0.1:9876

#生产者

#指定生产者发送的topic名称

spring.cloud.stream.bindings.ccAdminServiceMessageOut.destination=comment-topic-comment-insert

#指定编码类型

spring.cloud.stream.bindings.ccAdminServiceMessageOut.content-type=application/json

#消费者

#指定消费的topic名称

spring.cloud.stream.bindings.ccAdminServiceCommentIn.destination=comment-topic-comment-insert

#指定编码类型

spring.cloud.stream.bindings.ccAdminServiceCommentIn.content-type=application/json

#指定分组名称

spring.cloud.stream.bindings.ccAdminServiceCommentIn.group=cc-admin-comment-consumer-group

其中ccAdminServiceCommentIn与ccAdminServiceMessageOut为消费者与生产者对应的通道名称,这里通道名称不等同于topic名

public interface MessageProcessor {


    String INPUT_CC_ADMIN_COMMENT_MESSAGE = "ccAdminServiceCommentIn";


    String OUTPUT_CC_ADMIN_SERVICE_MESSAGE = "ccAdminServiceCommentOut";


    @Input(INPUT_CC_ADMIN_COMMENT_MESSAGE)

    SubscribableChannel inputBiServiceSoCreate();


    @Output(OUTPUT_CC_ADMIN_SERVICE_MESSAGE)

    MessageChannel ouputCcAdminServiceMsgOut();

}

@Input注解绑定了一个名为ccAdminServiceCommentIn的通道,对应的由消费者去使用

@Output注解绑定了一个名为ccAdminServiceCommentOut的通道,对应的由消息生产者去使用

下面是消费者的代码实现:

@EnableBinding({MessageProcessor.class})

@Slf4j

public class OrderMqReceive {


    @StreamListener(MessageProcessor.INPUT_CC_ADMIN_COMMENT_MESSAGE)

    public void messageListener(CommentMessageVo message) {

        log.info("----> 监听到的comment信息:{}", message);

    }

}

@EnableBinding:该注解用来指定一个或多个定义了@Input或@Output注解的接口,以此实现对消息通道(Channel)的绑定

@StreamListener:该注解主要定义在方法上,作用是将被修饰的方法注册为消息中间件上数据流的事件监听器,注解中的属性值对应了监听的消息通道名

生产者代码实现:

@EnableBinding({MessageProcessor.class})

@RestController

@Slf4j

public class CommentApiController {


    @PostMapping(name = "发送队列消息", value = "/comment/sendMsg")

    public ResponseBaseVo sendMq(@Valid @RequestBody QueryCommentListRequestVo queryCommentListRequestVo) {

        Message message = MessageBuilder.withPayload(queryCommentListRequestVo).build();

        messageProcessor.ouputCcAdminServiceMsgOut().send(message);

        return ResponseBaseVo.ok();

    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值