如果不清楚本篇内容的,请务必先去看完上一篇再看本篇,否则阅读起来可能会有部分障碍和困难;

上一篇文章《SpringCloud学习之Stream消息驱动【默认通道】(十)》我们简单用自定义通道实现了消息发送和接收,但是用的是Stream给我们提供的默认Source,Sink,接下来我们要自己进行自定义,这种方式在工作中还是用的比较多的,因为我们要往不同的消息通道发消息,必然不能全都叫input,output的,那样的话就乱套了

(一)创建消息生产者【service-sender-stream-8089】

MySource.java

package com.xu.serviceconsumer.interfaces;

import org.springframework.cloud.stream.annotation.Input;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel; public interface MySource { String INPUT_CHANNEL = "myInput";
String OUTPUT_CHANNEL = "myOutput"; /**
* 输入通道
* @return
*/
@Input(MySource.INPUT_CHANNEL)
SubscribableChannel input(); /**
* 输出通道
* @return
*/
@Output(MySource.OUTPUT_CHANNEL)
MessageChannel output(); }

application.yml

server:
port: 8089
spring:
application:
name: spring-cloud-stream-sender
cloud:
stream:
binders:
defaultRabbit:
type: rabbit
environment: #配置rabbimq连接环境
spring:
rabbitmq:
host: localhost
username: guest
password: guest
virtual-host: /
bindings:
myOutput: #自定义输出通道
destination: stream-demo #exchange名称,交换模式默认是topic
content-type: text/plain #消息发送的格式,接收端不用指定格式,但是发送端要

发送消息接口不变

接口实现需要重新改造:

(二)消息消费者【service-consumer-stream-8090和service-consumer-stream-8091】

这两个消费客户端的配置基本一模一样的,只是application.yml中的端口略有不同

因为我们这个测试项目没有公共依赖模块,所以暂时把消息生产端中的MySource.java这个自定义通道类文件复制放到两个客户端模块里

我们还要重新改造消息消费者里的代码,接口定义不变:

重新Rebuild三个项目模块,然后重新启动三个模块,打开消息生产者swagger页面http://localhost:8089/swagger-ui.html重新生产一个消息到消息队列,我们依旧可以看到两个客户端也接收到了发送过来的消息:

至此我们完成了自定义通道消息发送和接收,spring cloud stream还有很多东西(比如分组group和分区partition),后面有空我再深入了解后补充说明,谢谢大家。

===============================================================================

如果您觉得此文有帮助,可以打赏点钱给我支付宝或扫描二维码

最新文章

  1. Nginx-->基础-->排错-->nginx错误总结
  2. Cookie的Secure属性
  3. leveldb - 并发写入处理
  4. sql-char和varchar,nvarchar的区别
  5. PHP Code Reviewing Learning
  6. JAVA EE 第一阶段项目问题
  7. [mysql] linux 下mysql 5.7.12 安装
  8. Golang学习 - reflect 包
  9. QT5.7交叉编译安装到arm(好多系列文章)
  10. 【Problem】Count and Say
  11. 虎记:强大的nth-child(n)伪类选择器玩法
  12. C编译: 使用gdb调试
  13. 写JQuery 插件
  14. Linux编程之有限状态机FSM的理解与实现
  15. (转)每天一个linux命令(50):crontab命令
  16. Ubuntu 安装Appium
  17. native-echarts 图形组件
  18. Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记
  19. C# Note8: 设计模式全解
  20. redis相关问题

热门文章

  1. Redis Cluster 获取主从关系
  2. Windows系统查看端口被那些进程使用
  3. 树莓派—raspbian软件源
  4. MyBatis笔记(一)
  5. face_recognition实时人脸识别
  6. UVA - 10891 Game of Sum (区间dp)
  7. select2 智能补全模糊查询select2的下拉选择框使用
  8. Java多线程的应用
  9. NumPy 基于数值区间创建数组
  10. kibana下载与安装