SpringCloud Stream整合RabbitMq进行消息接收和发送
消息发送者application.yml添加配置
spring.cloud.stream.bindings.output-trip-notice.destination = trip_notice_dev
spring.rabbitmq.host = 你的ip
spring.rabbitmq.port = 5672
spring.rabbitmq.username = 账号
spring.rabbitmq.password = 密码
spring.rabbitmq.virtualHost = /
定义Notice接口
public interface TripNotice {
String INPUT = "input-trip-notice";
String OUTPUT = "output-trip-notice";
@Input(INPUT)
MessageChannel input();
@Output(OUTPUT)
MessageChannel output();
}
发送消息
@EnableBinding(TripNotice.class)
public class SendNotice {
private static LogTool LOGGER = LogTool.getLogger(SendNotice.class);
@Autowired
private TripNotice tripNotice;
@Autowired
private MessageUnprocessedMapper messageUnprocessedMapper;
@Async
public Boolean sendPosLvlChangeNotice(PosLvlNoticeDTO dto) {
String payload = JSON.toJSONString(dto);
boolean succ = tripNotice.output().send(MessageBuilder.withPayload(payload).setHeader("headerName", "headerValue").build());
if (!succ) {
saveUnprocessedMessage(bizPosLvlNoticeDTO.getTenantId(), bizPosLvlNoticeDTO.getNoticeType(),bizPosLvlNoticeDTO.getPositionLvlId());
}
return succ;
}
}
消息接收者application.yml配置
spring.rabbitmq.host = 你的ip
spring.rabbitmq.port = 5672
spring.rabbitmq.username = 账号
spring.rabbitmq.password = 密码
spring.rabbitmq.virtualHost = /
# 消息接收全局配置
spring.cloud.stream.bindings.input-trip-notice.destination = trip_notice_dev
# 消息发送全局配置
spring.cloud.stream.bindings.output-trip-notice.destination = trip_notice_dev
消息接收
@EnableBinding(TripNotice.class)
public class NoticeListener {
@Autowired
private UserOrgService userOrgService;
@LogAround
@StreamListener(value = TripNotice.INPUT, condition = "headers['headerName']=='headerValue'")
public void updatePositionNotice(PosLvlNoticeDTO notice){
}
}
发送者Maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
接收者Maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>