引入maven
<!--整合rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
编写config
package com.qizhi.config;
import com.rabbitmq.client.AMQP;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMqConfig {
public final static String ES_QUEUE="es_queue";
public final static String ES_CHANGE="es_change";
public final static String ES_BIND_KEY="es_change";
@Bean
public Queue queue(){
return new Queue(ES_QUEUE);
}
@Bean
public DirectExchange exchange(){
return new DirectExchange(ES_CHANGE);
}
@Bean
Binding binding(Queue queue,DirectExchange directExchange){
return BindingBuilder.bind(queue).to(directExchange).with(ES_BIND_KEY);
}
}
编写MqMessage
package com.qizhi.search.mode.mq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BookEsIndexMessage implements Serializable {
public final static String CREATE_OR_UPDATE="create_update";
public final static String REMOVE="remove";
private long id;
private String type;
}
信息调控类 MqMessageHandle
package com.qizhi.search.mode.mq;
import com.qizhi.config.RabbitMqConfig;
import com.qizhi.service.SearchService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@RabbitListener(queues = RabbitMqConfig.ES_QUEUE)
public class MqMessageHandle {
@Autowired
SearchService searchService;
@RabbitHandler
public void handler(BookEsIndexMessage message) {
log.info("mq 收到一条消息: {}", message.toString());
switch (message.getType()) {
case BookEsIndexMessage.CREATE_OR_UPDATE:
searchService.createOrUpdate(message);
break;
case BookEsIndexMessage.REMOVE:
searchService.removeIndex(message);
break;
default:
log.error("没找到对应的消息类型,请注意!! --》 {}", message.toString());
break;
}
}
}