1.nacos配置
spring:
kafka:
bootstrap-servers:
consumer:kakfa集群
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
bootstrap-servers: kakfa集群
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
cloud:
stream:
kafka:
binder:
brokers: kakfa集群
zk-nodes: zk集群
auto-create-topics: true
replication-factor: 3
auto-add-partitions: true
group: group1
bindings:
id1:
destination: topic1
binder: kafka
producer:
use-native-encoding: true
consumer:
batch-mode: true
2.代码
2.1输入通道
public interface TaskMessageSink {
String id1 = "id1";
//powerJob状态变更输入通道
@Input(value = id1)
SubscribableChannel id1();
}
//实现类
@EnableBinding(TaskMessageSink.class)
@Slf4j
public class TaskReceiveMessage {
@Autowired
private xxx xxx;
//接收任务状态相关信息
@StreamListener(TaskMessageSink.id1)
public void receiveTaskStatusInfo(List<String> taskMessage) {
try {
for (String msg : taskMessage) {
InstanceStatusMsg message = JSON.parseObject(msg, InstanceStatusMsg.class);
log.info("[接收xx状态信息]: {}", message);
xxx.updatexxx(message);
}
} catch (Exception e) {
log.error("[接收xx状态信息] 处理失败!", e);
}}}
2.2发送通道
public interface OutputChannel {
@Output("topic1")
MessageChannel handler1();
}
@Service
@EnableBinding(OutputChannel.class)
public class MessageSendService {
private final OutputChannel outputChannel;
public MessageSendService(OutputChannel outputChannel) {
this.outputChannel = outputChannel;
}
// 发送数据源变更消息
public void sendDsUpdateMsg(Msg msg) {
log.info("发送数据源变更消息:{}", msg);
outputChannel.handler1().send(MessageBuilder.withPayload(msg).build());
}
3.参考网站
https://blog.csdn.net/m0_67393619/article/details/124442130