对比新文件 |
| | |
| | | package com.iailab.framework.websocket.core.sender.rabbitmq; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.amqp.core.ExchangeTypes; |
| | | import org.springframework.amqp.rabbit.annotation.*; |
| | | |
| | | /** |
| | | * {@link RabbitMQWebSocketMessage} 广播消息的消费者,真正把消息发送出去 |
| | | * |
| | | * @author iailab |
| | | */ |
| | | @RabbitListener( |
| | | bindings = @QueueBinding( |
| | | value = @Queue( |
| | | // 在 Queue 的名字上,使用 UUID 生成其后缀。这样,启动的 Consumer 的 Queue 不同,以达到广播消费的目的 |
| | | name = "${iailab.websocket.sender-rabbitmq.queue}" + "-" + "#{T(java.util.UUID).randomUUID()}", |
| | | // Consumer 关闭时,该队列就可以被自动删除了 |
| | | autoDelete = "true" |
| | | ), |
| | | exchange = @Exchange( |
| | | name = "${iailab.websocket.sender-rabbitmq.exchange}", |
| | | type = ExchangeTypes.TOPIC, |
| | | declare = "false" |
| | | ) |
| | | ) |
| | | ) |
| | | @RequiredArgsConstructor |
| | | public class RabbitMQWebSocketMessageConsumer { |
| | | |
| | | private final RabbitMQWebSocketMessageSender rabbitMQWebSocketMessageSender; |
| | | |
| | | @RabbitHandler |
| | | public void onMessage(RabbitMQWebSocketMessage message) { |
| | | rabbitMQWebSocketMessageSender.send(message.getSessionId(), |
| | | message.getUserType(), message.getUserId(), |
| | | message.getMessageType(), message.getMessageContent()); |
| | | } |
| | | |
| | | } |