streamBridge
生产消费 streamMQ
示例 官方demo:https://github.com/spring-cloud/spring-cloud-stream-samples/blob/main/streambridge-samples/stream-bridge-avro/src/main/java/com/example/stream/bridge/avro/StreamBridgeAvroApplication.java
spring:
cloud:
stream:
function:
# 重点配置 与 binding 名与消费者对应,多个可以使用;
definition: cusnotification;projectmapping
bindings:
projectmapping-out-0:
content-type: application/json
destination: projectmapping-test-topic
group: test-group
binder: rocketmq
rocketmq:
binder:
# RocketMQ 服务器地址
name-server: 192.168.1.102:9876
bindings:
projectmapping-out-0:
producer:
# 必须得写
group: default
cusnotification-out-0:
producer:
# 必须得写
group: cusnotification-group
spring:
cloud:
stream:
function:
# 重点配置 与 binding 名与消费者对应,多个可以使用;
definition: projectmapping;cusnotification
bindings:
projectmapping-in-0:
content-type: application/json
destination: projectmapping-test-topic
group: test-group
binder: rocketmq
# Spring Cloud Stream RocketMQ 配置项
rocketmq:
# RocketMQ Binder 配置项,对应 RocketMQBinderConfigurationProperties 类106.15.139.83
binder:
name-server: 192.168.1.102:9876 # RocketMQ Namesrv 地址
# RocketMQ 自定义 Binding 配置项,对应 RocketMQBindingProperties Map
bindings:
projectmapping-in-0:
# RocketMQ Consumer 配置项,对应 RocketMQConsumerProperties 类
consumer:
enabled: true # 是否开启消费,默认为 true
broadcasting: false # 是否使用广播消费,默认为 false 使用集群消费
orderly: true # 是否顺序消费,默认为 false 并发消费。
public class MessageConstant {
/**
* 添加项目映射消息
*/
public static final String PROJECT_MAPPING = "projectmapping" + SplitStrConst.LINE;
/**
* 生产者标识
*/
public static final String OUTPUT = "out" + SplitStrConst.LINE + SplitStrConst.ZERO;
/**
* 项目映射消息生产者
*/
public static final String PROJECT_MAPPING_OUTPUT = PROJECT_MAPPING + OUTPUT;
}
@Data
@Accessors(chain = true)
public class CommonMessaging {
/**
* 消息id
*/
private String msgId;
/**
* 消息内容
*/
private String msgText;
}
private final StreamBridge streamBridge;
public void streamTestMsg(String msg) {
// 构建消息对象
CommonMessaging testMessaging = new CommonMessaging()
.setMsgId(UUID.randomUUID().toString())
.setMsgText(msg);
streamBridge.send(MessageConstant.PROJECT_MAPPING_OUTPUT, MessageBuilder.withPayload(testMessaging).build());
}
@Component
@Slf4j
public class ProjectMappingConsumer {
@Bean
Consumer<CommonMessaging> projectmapping() {
log.info("projectmapping 初始化订阅成功。");
return msg -> {
log.info("[onMessage][线程编号:{} 消息内容:{}]", Thread.currentThread().getId(), msg.toString());
System.out.println(msg.getMsgText());
};
}
}