SpringCloud Stream整合RabbitMq进行消息接收和发送

SpringCloud Stream整合RabbitMq进行消息接收和发送

消息发送者application.yml添加配置

#RabbitMQ配置
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";

    /**
     * 接收
     * @return
     */
    @Input(INPUT)
    MessageChannel input();

    /**
     * 发送
     * @return
     */
    @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;

    /**
     * 职级信息变更通知
     *
     * @param
     * @return
     */
    @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;

    /**
     *差标等级-职级关联表的删除或修改
     * @param
     * @return
     */
    @LogAround
    @StreamListener(value = TripNotice.INPUT, condition = "headers['headerName']=='headerValue'")
    public void updatePositionNotice(PosLvlNoticeDTO notice){
        //进行消息接收后的逻辑
        }
}

发送者Maven依赖

		<!--rabbitMQ相关-->
		<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依赖

		<!-- rabbitMQ -->
		<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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值