本来想用websocket做一个消息推送 可是分布式环境下不支持session共享因为服务器不同
所以采用 rabbitMQ+webSocket实现分布式消息推送
生产者将消息 发送给 rabbitMQ 的 virtual-host:/(顶极路由) 再由它路由到交换机 最终由交换机通过路由键指定具体的管道
消费者监听指定的管道获取消息
最终将获取的消息 交给 webSocket 被@OnMessage注解标识的方法
每次消费一条消息交给 被@OnMessage注解标识的方法 返回给前台
实现分布式实时推送
1.配置rabbitMQ
消息生产者
1.1pom.xml
1
2
3 org.springframework.boot
4 spring-boot-starter-amqp
5
1 server:2 port: 50023
4 spring:5 rabbitmq:6 host: localhost7 #账号密码 默认有的8 username: guest9 password: guest10 #rbbitmq虚拟主机路径11 virtual-host: /12 #rabbitmq的端口号 也是默认的13 port: 5672
1 @SpringBootApplication2 @MapperScan(basePackages = "com.supplychain.dao")3 @EnableRabbit/**开启rabbitmq*/
4 public classThumbsupServer5002_App {5
6 public static voidmain(String[]args){7
8 SpringApplication.run(ThumbsupServer5002_App.class,args);9
10 }11
12 /**消息的转换器13 * 设置成json 并放入到Spring中14 **/
15 @Bean16 publicMessageConverter messageConverter(){17
18 return newJackson2JsonMessageConverter();19
20 }21 }
测试发送消息
1 @RunWith(SpringRunner.class)2 @SpringBootTest3 public classThumbsupServer5002_AppTest {4
5
6 @Autowired7 privateRabbitTemplate rabbitTemplate;8
9 @Tes