生产者端配置:
application.yml配置:
spring:
cloud:
stream:
bindings:
canal-output:
destination: #相当于topic
content-type: application/json
rocketmq:
binder:
name-server:
bindings:
canal-output: # 定义name为output的binding
producer:
group:
#destination: springboot-mq1 #相当于topic
#group: springboot-mq1-group
#是否使用同步得方式发送消息。默认值: false.
#sync: true
#是否在 Vip Channel 上发送消息。默认值: true.
vipChannelEnabled: false
#发送消息的超时时间(毫秒)。默认值: 3000.
sendMessageTimeout: 6000
#在同步发送消息的模式下,消息发送失败的重试次数。默认值: 2.
retryTimesWhenSendFailed: 2
消息发送实现类:
@Service
@EnableBinding({Channel.class}) //这里采用自定义的收发接口
public class MqServiceImpl implements MqService {
@Resource
private Channel channel; //消息发送管道
@Override
public void send(String msg) {
channel.output().send(MessageBuilder.withPayload(msg).build());
}
}
public interface Channel {
String OUTPUT = "output"; //这里的名称对应spring.cloud.stream.rocketmq.bindings.<channelName>
@Output(Channel.OUTPUT)
MessageChannel output();
}
消费者端配置:
application.yml:
spring:
cloud:
stream:
rocketmq:
binder:
name-server:
bindings:
input:
consumer:
broadcasting: true #开启广播模式
# 定义name为output的binding
bindings:
input:
destination: #消费哪个topic
content-type: application/json
group: #定义消费者组名
接受服务:
@RestController
@EnableBinding(Sink.class)
@Slf4j
public class MessageListenerService {
@StreamListener(Sink.INPUT)
public void input(Message message) {
log.debug("消费同步消息->{}", JSON.toJSONString(message));
Object payload = message.getPayload();
if (null != payload) {
}
}
}