# spring-boot-starter-stream-rabbit **Repository Path**: kancy666/spring-boot-starter-stream-rabbit ## Basic Information - **Project Name**: spring-boot-starter-stream-rabbit - **Description**: spring-boot-starter-stream-rabbit - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-03-08 - **Last Updated**: 2021-01-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring-boot-starter-stream-rabbit ### 介绍 spring-boot-starter-stream-rabbit - 自定义消息:ChannelMessage - 自定义消息转换器:MessageConverter - 自定义异常处理器:ExceptionHandler - 自定义消息处理器:MessageHandler ### 使用说明 #### 1. 引入依赖 ```xml com.kancy spring-boot-starter-stream-rabbit ${version} ``` #### 2. 添加配置 - 定义RabbitMq的基本内容:交换机,队列,绑定路由 ```properties #定义命名空间 stream.rabbit.project=test #定义交换机 stream.rabbit.exchange.schedule.name=test.schedule stream.rabbit.exchange.schedule.type=direct #定义队列,并且绑定交换机 stream.rabbit.binding-queue.polling.name=test.schedule.polling stream.rabbit.binding-queue.polling.exchange-name=test.schedule stream.rabbit.binding-queue.polling.routing-key=polling #定义队列,并且绑定交换机 stream.rabbit.binding-queue.five-seconds.name=test.schedule.five-seconds stream.rabbit.binding-queue.five-seconds.exchange-name=test.schedule stream.rabbit.binding-queue.five-seconds.routing-key=five-seconds stream.rabbit.binding-queue.five-seconds.dlx-exchange-name=test.schedule stream.rabbit.binding-queue.five-seconds.dlx-routing-key=polling stream.rabbit.binding-queue.five-seconds.ttl=5s #配置Rabbitmq连接信息 spring.rabbitmq.host=kancy.top spring.rabbitmq.port=5672 spring.rabbitmq.username=root spring.rabbitmq.password=**** spring.rabbitmq.virtual-host=/test spring.rabbitmq.publisher-confirms=true spring.rabbitmq.publisher-returns=true spring.rabbitmq.template.mandatory=true ``` - 定义channel ```yaml stream.rabbit: channel: polling: binding-key: polling concurrency: 2 consumer: user-message: message-handler: user five-seconds: binding-key: five-seconds ``` #### 3.自定义ChannelMessage ```java /** * PollingChannelMessage * * @author kancy * @date 2020/3/8 16:51 */ @ChannelKey("polling") public class PollingChannelMessage extends AbstractChannelMessage { } ``` #### 4.定义对应消息的处理器 ```java /** * UserMessageHandler * * @author kancy * @date 2020/3/8 20:22 */ @Component public class UserMessageHandler implements MessageHandler { private static Logger log = LoggerFactory.getLogger(UserMessageHandler.class); /** * 监听消息 * * @param payload * @throws Exception */ @Override public void onMessage(User payload) { log.info("接收信息:{}" , payload); } } ``` #### 5.发送消息 ```java @RunWith(SpringRunner.class) @SpringBootTest(classes = {RabbitMessageChannelAutoConfiguration.class, RabbitAutoConfiguration.class, UserMessageHandler.class}) @ActiveProfiles({"test"}) public class MessageChannelServiceTests { @Autowired private MessageChannelService messageChannelService; @Test public void sendPollingChannelMessageTest(){ ChannelMessage channelMessage = new PollingChannelMessage(); channelMessage.setMessageType("user-message"); channelMessage.setPayload(new User()); messageChannelService.sendMessage(channelMessage); } @Test public void sendMessageTest(){ // 手动指定channelKey String channelKey = "five-seconds"; ChannelMessage channelMessage = new SimpleChannelMessage(channelKey); channelMessage.setMessageType("user-message"); channelMessage.setPayload(new User()); messageChannelService.sendMessage(channelMessage); } } ```