springboot集成rabbitmq
一 添加pom
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
二,配置yml
spring:rabbitmq:host: 192.168.56.200port: 5672username: adminpassword: adminvirtual-host: /
mq:exchange-name: exchangequeue-name: queuerouting-key: key1
三 配置绑定关系
import lombok.Data;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;/*** @author yangXinming* @date 2024-03-08* @description 消息队列配置*/
@Data
@Configuration
@Component
public class RabbitMQConfig {/*** 消息队列名称**/@Value("${mq.queue-name}")private String queenName;/*** 交换机名称**/@Value("${mq.exchange-name}")private String exchangeName;/*** 路由key**/@Value("${mq.routing-key}")private String routingKey;/*** @MethodName: queue* @description: 消息队列* @UpdateTime: 2024/3/7* @Return: org.springframework.amqp.core.Queue**/@Beanpublic Queue queue() {return new Queue(queenName);}/**** @MethodName: exchange* @description: 交换机* @UpdateTime: 2024/3/7* @Return: org.springframework.amqp.core.DirectExchange**/@Beanpublic DirectExchange exchange() {return new DirectExchange(exchangeName);}/*** @MethodName: binding* @description: 将消息队列 绑定到交换机* @UpdateTime: 2024/3/7**/@Beanpublic Binding binding() {return BindingBuilder.bind(queue()).to(exchange()).with(routingKey);}}
四 生产者
@Service
public class RabbitService implements IRabbitService {@Autowiredprivate RabbitTemplate rabbitTemplate;@AutowiredRabbitMQConfig rabbitMQConfig;@Overridepublic void convertAndSend(Object object) {rabbitTemplate.convertAndSend(rabbitMQConfig.getExchangeName(), rabbitMQConfig.getRoutingKey(), object);}
}
五 消费者
@Component
@Slf4j
public class RabbitMQConsumer {@RabbitListener(queues = "${mq.queue-name}")public void receiveMessage(String message) {try {log.info("mq message:[{}]",message);} catch (Exception e) {log.error("操作异常【{}】", message);}}
}