美文网首页Spring cloud stream
Spring Cloud Stream结合RabbitMQ简单实

Spring Cloud Stream结合RabbitMQ简单实

作者: 内卷星球 | 来源:发表于2018-03-28 10:09 被阅读17次

了解Spring Cloud Stream

了解RabbitMQ

各项目中引入依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

生产者A

A项目中新建一个接口作为通道

NotifyChannelConstant为自定义常量
@Output注解代表这是一个输出通道

@Component
public interface PdfNotifyChannel {

    @Output(NotifyChannelConstant.PDF_NOTIFY_CHANNEL)
    MessageChannel output();
}

绑定接口@EnableBinding

  • 进行消息通知的类,需要添加@EnableBinding(PdfNotifyChannel.class),指定绑定的接口通道
  • 在类中进行初始化
 @Autowired
 private PdfNotifyChannel pdfNotifyChannel;
  • 业务方法中进行调用
pdfNotifyChannel.output().send(MessageBuilder.withPayload(msg).build());

消费者B

B项目中新建一个接口作为通道

NotifyChannelConstant为自定义常量,此处引用的是A项目中的常量
@Input注解代表这是一个输入通道,通道名需要与生产者对应才能接收消息

@Component
public interface PdfNotifyChannel {
    @Input(NotifyChannelConstant.PDF_NOTIFY_CHANNEL)
    MessageChannel input();
}

绑定接口@EnableBinding

  • 进行消息接收的类,需要添加@EnableBinding(PdfNotifyChannel.class),指定绑定的接口通道
  • 监听
    使用@StreamListener进行监听该通道中的信息
/**
  * 监听推送信息
  * @param message
  */
 @StreamListener(NotifyChannelConstant.PDF_NOTIFY_CHANNEL)
 public void receiverPdfNotify(Message<String> message) {
        LOGGER.info("频道[{}]监听信息为:[{}]", 
        NotifyChannelConstant.PDF_NOTIFY_CHANNEL, message.getPayload());  
}

配置RabbitMQ

需要AB配置一致

spring.rabbitmq.host=localhost
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
#默认5672
spring.rabbitmq.port=5673
#默认/
spring.rabbitmq.virtual-host=/

RabbitMQ相关命令

# 查看当前所有用户
$ sudo rabbitmqctl list_users

# 查看默认guest用户的权限
$ sudo rabbitmqctl list_user_permissions guest

# 由于RabbitMQ默认的账号用户名和密码都是guest。为了安全起见, 先删掉默认用户
$ sudo rabbitmqctl delete_user guest

# 添加新用户
$ sudo rabbitmqctl add_user username password

# 设置用户tag
$ sudo rabbitmqctl set_user_tags username administrator

# 赋予用户默认vhost的全部操作权限
$ sudo rabbitmqctl set_permissions -p / username ".*" ".*" ".*"

# 查看用户的权限
$ sudo rabbitmqctl list_user_permissions username

相关文章

网友评论

本文标题:Spring Cloud Stream结合RabbitMQ简单实

本文链接:https://www.haomeiwen.com/subject/zchycftx.html