首页 > 其他 > 详细

采用rabbitMq消息推送方案

时间:2021-04-07 15:22:23      阅读:13      评论:0      收藏:0      [点我收藏+]

采用rabbitMq消息推送方案

总体导图

技术分享图片

 

 

 

生产者

就是消息的生产者是需要发送推送消息的服务,

 

1.需要发送推送消息的服务pom里面导入rabbitMq的jar包

 

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.添加配置类交给spring管理

 

//rabbitMQ的配置交给spring管理
@Configuration
public class RabbitMQConfig {
   //这里列举可以被下面直接引用
//定义邮件的队列名字
public static final String QUEUE_NAME_EMAIL = "queue_name_email";
//定义短信的队列名字
public static final String QUEUE_NAME_SMS = "queue_name_SMS";
//站内信队列
public static final String QUEUE_NAME_SYSTEM_MESSAGE = "queue_name_system_message";
//定义交换机
public static final String EXCHANGE_NAME_TOPIC = "exchange_name_topic";


//定义交换机
@Bean(EXCHANGE_NAME_TOPIC)
public Exchange exchangeNameTopic(){
return ExchangeBuilder.topicExchange(EXCHANGE_NAME_TOPIC).durable(true).build();
}

//定义邮件的队列Bean
@Bean(QUEUE_NAME_EMAIL)
public Queue emailQueue(){
return new Queue(QUEUE_NAME_EMAIL,true);
}


//定义短信的队列Bean
@Bean(QUEUE_NAME_SMS)
public Queue smsQueue(){
return new Queue(QUEUE_NAME_SMS,true);
}
//定义系统消息的队列Bean
@Bean(QUEUE_NAME_SYSTEM_MESSAGE)
public Queue systemMessageQueue(){
return new Queue(QUEUE_NAME_SYSTEM_MESSAGE,true);
}

//定义邮件的队列绑定到交换机
@Bean
public Binding smsQueueBinding(@Qualifier(QUEUE_NAME_SMS) Queue smsQueue,
Exchange exchangeNameTopic){

// #.sms.course
return BindingBuilder.bind(smsQueue).to(exchangeNameTopic).with("message.sms").noargs();

}
//定义邮件的队列绑定到交换机
@Bean
public Binding emailQueueBinding(@Qualifier(QUEUE_NAME_EMAIL) Queue emailQueue,
Exchange exchangeNameTopic){

// #.email.course
return BindingBuilder.bind(emailQueue).to(exchangeNameTopic).with("message.email").noargs();

}
@Bean
public Binding systemMessageQueueBinding(
@Qualifier(QUEUE_NAME_SYSTEM_MESSAGE) Queue systemMessageQueue,
Exchange exchangeNameTopic){
// #.systemmessage.course
return BindingBuilder.bind(systemMessageQueue).to(exchangeNameTopic).with("message.system").noargs();

}
}


2.在需要的业务处调用rabbitmq发送到指定列表

 

需要使用的类

@Autowired
private RabbitTemplate rabbitTemplate;

 

在需要产生消息的地方引用:

 

ublishMsg(course);


抽取的代码如下
/*上线和下线操作都需要向消息队列发送消息,邮件,短信,程序内置提示来消费*/
private void publishMsg(Course course){
//创建交换机 创建队列
//发送短信
rabbitTemplate.convertAndSend( RabbitMQConfig.EXCHANGE_NAME_TOPIC,
"message.sms",
course.getName());
//发送邮件
rabbitTemplate.convertAndSend(
RabbitMQConfig.EXCHANGE_NAME_TOPIC,
"message.email",
course.getName()
);
//发送站内信
rabbitTemplate.convertAndSend(
RabbitMQConfig.EXCHANGE_NAME_TOPIC,
"message.system",
course.getName()
);
}

 

采用rabbitMq消息推送方案

原文:https://www.cnblogs.com/china10/p/14626953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!