- 快速构建springboot项目,依托maven和aliyun的脚手架快速构建
- 修改配置文件,配置rabbitmq(模板properties,这里改为yml)
# 应用服务 WEB 访问端口
server:
port: 8080
spring:
rabbitmq:
host: 192.168.10.128
port: 5672
username: guest
password: guest
3. 添加配置类(可忽略)
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.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMqConfig {
public final static String testExchange = "testExchange";
public final static String testQueue = "testQueue";
public final static String testRoutingKey = "testRoutingKey";
@Value("${spring.rabbitmq.host:localhost}")
private String host;
@Value("${spring.rabbitmq.port:5672}")
private Integer port;
@Value("${spring.rabbitmq.username:guest}")
private String user;
@Value("${spring.rabbitmq.password:guest}")
private String pass;
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(user);
connectionFactory.setPassword(pass);
connectionFactory.setVirtualHost("/");
// connectionFactory.setPublisherConfirms(true); // 启用发布确认[@1@]
return connectionFactory;
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
// 可以在这里配置 RabbitTemplate 的其他属性,比如消息确认回调等[@1@]
return rabbitTemplate;
}
@Bean
public DirectExchange directExchange() {
return new DirectExchange(testExchange, true, false, null);
}
@Bean
public Queue testQueue() {
return new Queue(testQueue);
}
@Bean
public Binding binding(Queue testQueue, DirectExchange directExchange) {
return BindingBuilder.bind(testQueue).to(directExchange).with(testRoutingKey);
}
}
4. 构建消息发送类
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RabbitMqSender {
@Autowired
private RabbitTemplate rabbitTemplate;
public void send(String exchange, String routingKey, String message) {
rabbitTemplate.convertAndSend(exchange, routingKey, message);
System.out.println("Message sent: " + message);
}
}
5. 构建消息接收类
@Service
public class RabbitMqReceiver {
@RabbitListener(queues = RabbitMqConfig.testQueue)
public void receive(String message) {
System.out.println("Received message: " + message);
}
}
6. 构建快速测试接口
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RabbitMqSendController {
@Autowired
RabbitMqSender sender;
@PostMapping("/send")
public void trySend() {
int i = 0;
while (i < 100) {
sender.send(RabbitMqConfig.testExchange, RabbitMqConfig.testRoutingKey, "test message...");
i++;
}
}
}
7. 打开rabbitmq管理面板,浏览器输入rabbitmq服务器 host:15672,默认登录 guest/guest
- 启动服务,并发送请求
- 控制台输出
- rabbitmq管理面板可见